none
Datum aus Timestamp generieren RRS feed

  • Frage

  • Hallo,

    ich habe eine SQL-Funktion, die mir jeweils den Timestamp des ersten und letzen Tages eines Monats ausgibt. Für August 2013 also z.B.b 1375315200 und 1377907200 (01.08.2013 00:00:00/31.08.2013 00:00:00).

    Zu diesen Timestamps benötige ich zusätzlich noch das Datum in der Form "dd.mm.yyyy", für August 2013 als "01.08.2013" und "31.08.2013".

    Gibt es dafür eine T-SQL-Funktion oder einen einfachen Workaround?

    Freitag, 23. August 2013 10:44

Antworten

  • Hallo Hannes,

    wenn Du berechnen kannst, wie Du von einem Datum auf den Timestamp kommst, dann kannst Du doch auch berechnen, wie Du vom Timestamp aufs Datum kommst, und zwar mit der Funktion DATEADD

    DATEADD(second,@DeinTimestamp, {d '1970-01-01'}) AS Datum

    Und ein Datum kannst Du mit CONVERT in einen formatierten String umwandeln, z.B.

    SELECT CONVERT(varchar(10), GetDate(), 104) AS DatumDEFormat

    wobei 104 der Format-Parameter fürs DE Datumsformat ist; siehe Link oben.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 23. August 2013 12:30

Alle Antworten

  • Hallo Hannes,

    was ist das bitte für ein Timestamp Wert, Unix-Timestamp oder wie kann man von dem numerischen Wert auf ein Datum kommen?


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 23. August 2013 11:57
  • Ja, es handelt sich um UNIX-Timestamps, die ich wie folgt generiere:

    DATEDIFF(second,{d '1970-01-01'},(SELECT DATEADD(MONTH,DATEDIFF(MONTH,30,GETDATE()),0)))

    Freitag, 23. August 2013 12:04
  • Hallo Hannes,

    mit SQL SERVER 2012 kannst Du auch EOMONTH nehmen.

    SELECT DATEADD( d, 1, EOMONTH( DATEADD( m, -1, GETDATE() ) ) ) AS FirstDay,
           EOMONTH( GETDATE() ) AS LastDay


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 23. August 2013 12:12
    Moderator
  • In der 2008er-Version ist EOMONTH() aber noch nicht verfügbar, oder übersehe ich etwas?

    Ich werde mal versuchen, mit CONVERT() das richtige Format zu erreichen.

    Freitag, 23. August 2013 12:30
  • Hallo Hannes,

    wenn Du berechnen kannst, wie Du von einem Datum auf den Timestamp kommst, dann kannst Du doch auch berechnen, wie Du vom Timestamp aufs Datum kommst, und zwar mit der Funktion DATEADD

    DATEADD(second,@DeinTimestamp, {d '1970-01-01'}) AS Datum

    Und ein Datum kannst Du mit CONVERT in einen formatierten String umwandeln, z.B.

    SELECT CONVERT(varchar(10), GetDate(), 104) AS DatumDEFormat

    wobei 104 der Format-Parameter fürs DE Datumsformat ist; siehe Link oben.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 23. August 2013 12:30
  • Danke, das ist genau das Format, welches ich brauche.
    Freitag, 23. August 2013 12:34