none
Datumliste erzeugen RRS feed

  • Frage

  • Hallo
     
    Ist es möglich, nur mit SQL eine Liste aller Daten vom 01.01. eines Jahres
    bis zum 31.12. desselben Jahres zu erzeugen ?
     
    Also so
    01.01.2010
    02.01.2010
     
    oder so
    2010-01-01
    2010-01-02
     
    wobei mir letzteres lieber wäre.
     
    Danke schon mal für etwaige Antworten.
     
    Michael
     
     
     
     
    Mittwoch, 14. Juli 2010 13:43

Antworten

  • Hallo Michael, das folgende Beispiel kannst Du sicher einfach anpassen, oder?

    WITH    Kalender
               AS ( SELECT   CAST('20100201' AS DATETIME) AS [Tag] -- die 
    explizite Konvertierung (cast) ohne Trennzeichen verwendet yyyymmdd
    unabhängig von der Sprache
                    UNION ALL          -- die explizite Konvertierung (cast) mit 
    Trennzeichen würde die Sprache berücksichtigen
                    SELECT   DATEADD(dd, 1, [Tag])
                    FROM     Kalender
                    WHERE    DATEADD(dd, 1, [Tag] ) <= '20100301'
                  )
    Select convert(varchar(10),k.Tag,104) as Datum, datename(DW,k.Tag) as
    Wochentag
    from Kalender k
    order by tag
    OPTION  ( MAXRECURSION 0 ) ; -- Ohne diesen Hinweis würde die Rekursion bei 
    100 Tagen stoppen. Fatal bei einem längeren Zeitraum.
    ;

    Einen schönen Tag noch,
    Christoph


    Microsoft SQL Server MVP
    http://www.insidesql.org

    Mittwoch, 14. Juli 2010 13:57
    Beantworter

Alle Antworten

  • Hallo Michael, das folgende Beispiel kannst Du sicher einfach anpassen, oder?

    WITH    Kalender
               AS ( SELECT   CAST('20100201' AS DATETIME) AS [Tag] -- die 
    explizite Konvertierung (cast) ohne Trennzeichen verwendet yyyymmdd
    unabhängig von der Sprache
                    UNION ALL          -- die explizite Konvertierung (cast) mit 
    Trennzeichen würde die Sprache berücksichtigen
                    SELECT   DATEADD(dd, 1, [Tag])
                    FROM     Kalender
                    WHERE    DATEADD(dd, 1, [Tag] ) <= '20100301'
                  )
    Select convert(varchar(10),k.Tag,104) as Datum, datename(DW,k.Tag) as
    Wochentag
    from Kalender k
    order by tag
    OPTION  ( MAXRECURSION 0 ) ; -- Ohne diesen Hinweis würde die Rekursion bei 
    100 Tagen stoppen. Fatal bei einem längeren Zeitraum.
    ;

    Einen schönen Tag noch,
    Christoph


    Microsoft SQL Server MVP
    http://www.insidesql.org

    Mittwoch, 14. Juli 2010 13:57
    Beantworter
  • Hallo Christoph
     
    Das ist genau das, was ich suche. Vielen Dank
     
    Michael

    Hallo Michael, das folgende Beispiel kannst Du sicher einfach anpassen, oder?

    WITH  Kalender
          AS ( SELECT  CAST('20100201' AS DATETIME) AS [Tag] -- die 
    explizite Konvertierung (cast) ohne Trennzeichen verwendet yyyymmdd
    unabhängig von der Sprache
            UNION ALL     -- die explizite Konvertierung (cast) mit 
    Trennzeichen würde die Sprache berücksichtigen
            SELECT  DATEADD(dd, 1, [Tag])
            FROM   Kalender
            WHERE  DATEADD(dd, 1, [Tag] ) <= '20100301'
           )
    Select convert(varchar(10),k.Tag,104) as Datum, datename(DW,k.Tag) as
    Wochentag
    from Kalender k
    order by tag
    OPTION ( MAXRECURSION 0 ) ; -- Ohne diesen Hinweis würde die Rekursion bei 
    100 Tagen stoppen. Fatal bei einem längeren Zeitraum.
    ;

    Einen schönen Tag noch,
    Christoph


    Microsoft SQL Server MVP
    http://www.insidesql.org

    Donnerstag, 15. Juli 2010 06:51