none
datetime mit exakten Milisekunden RRS feed

  • Frage

  • Hallo an alle,

    gibt es irgendwie eine Möglichkeit ohne Datepart oder komplizierten zerlegen (bekomme es leider nicht hin) ein Datetime mit exakten 000 (Millisekunden) zu erstellen.

    Beispiel

    convert(datetime, ('31.'+str(month(getdate()))+'.'+str(YEAR(getdate())+' '

    + str(datepart(hh,getdate()))+'.'+ str(datepart(n,getdate())) +'.'

    +str(datepart(ss,getdate()))+ str('.000') ) ),113) as test

    was mach ich falsch oder geht es auch einfacher?? 

    Dienstag, 7. Juli 2015 08:48

Antworten

Alle Antworten

  • Hi toot,

    wie sieht es hiermit aus?

    Get-Date -Format HH:mm:ss.fff


    Gruß

    Ben

    MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Dienstag, 7. Juli 2015 08:55
  • Sorry das sagt mir nichts kannst du das etwas spezifizieren bzw. ein Beispiel oder Link geben?
    Dienstag, 7. Juli 2015 09:10
  • Jetzt verstehe ich Dich nicht - Du wolltest doch eine Zeitangabe unter Einbeziehung der Millisekunden mit 3 Stellen?

    Der obige Befehl gibt z.B. jetzt gerade folgendes aus:

    11:24:03.747

    Oder wolltest Du etwas anderes?


    Gruß

    Ben

    MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Dienstag, 7. Juli 2015 09:24
  • jetzt hab ich es!
    Getdate mit 000 Millisekunden eine Minute früher:							
    dateadd(minute,-1, CONVERT(datetime, (STR(day(getdate()))+'.'+ str(month(getdate()))+'.'+str(YEAR(getdate()))
    							+ str(datepart(hh,getdate()))+':'+str(datepart(n,getdate()))+':'+str(datepart(ss,getdate()))+'.000'),104)) as a2
    		
    		

    so nun die Frage geht das auch leichter???? bzw, kürzer? einfacher?
    Dienstag, 7. Juli 2015 10:43
  • Es soll also nur der Millisekunden Anteil vom aktuellem Datum + Uhrzeit abgeschnitten werden? Konvertiere das Datum in ein festes String Format wie ODBC, kürze den String auf die Länge ohne Millisekunden und konvertiere wieder ins DateTime:

    SELECT CONVERT(datetime, CONVERT(varchar(19), GETDATE(), 120), 120);


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Dienstag, 7. Juli 2015 11:00
  • Und ohne die Konvertierungen geht es auch:
    Select dateadd(MS, -datepart(MS, getdate()), getdate());
    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu
    Dienstag, 7. Juli 2015 13:27
    Beantworter
  • Hallo,

    Vielleicht hilft dies:

    Count in VARCHAR nach Bedarf anpassen und die 121 (Format) nach bedarf hier Wählen. (Column1:DATETIME)

    SELECT CONVERT(VARCHAR(23), [Column1], 121) as DateAsString FROM [Table]
    ------------------------------------
    RESULT: 2015-07-08 14:25:12.345


    SELECT CONVERT(VARCHAR(23),[Column1],102) + ' ' + CONVERT(VARCHAR(23),[Column1],114) as DateAsString
    ------------------------------------
    Result: 2015.07.08 14:25:12.345

    Fehlende Informationen werden mit 0en aufgefüllt (je nach gewähltem Format)

    MFG Benutzer0000




    Mittwoch, 8. Juli 2015 12:27
  • Seit SQL-Server 2012 kannst du auch mit FORMAT (https://msdn.microsoft.com/de-de/library/hh213505(v=sql.120).aspx) arbeiten.

    SELECT FORMAT(GETDATE(), 'dd.MM.yyyy hh:mm:ss:fff')
    

    Du kannst deinen Format-String nach belieben zusammensetzen. Zum Beispiel auch:

    SELECT FORMAT(GETDATE(), 'fff')

    Wenn du nur die Milli-Sekunden haben willst.

    VG JSX

    Dienstag, 14. Juli 2015 09:33