Announcement

Collapse
No announcement yet.

Datum konvertieren?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datum konvertieren?

    Hallo

    ich habe ein Datum 27.04.012 in der Tabelle stehen. Das Ergebniss
    soll mir alle anzeigen vom letzten Jahr

    Dieser Versuch

    Code:
    WHERE     (dbo.PORDERS.date_end >= DATENAME(year, DATEADD(year, - 1, GETDATE())) + '01') AND (dbo.PORDERS.date_end <= DATENAME(year, 
                          DATEADD(year, - 1, GETDATE())) + '12')
    ist völlig gescheitert. Ich glaube ich stolpere über die Konvertierung des Datums

    Ich würde mich über einen Tip freuen.

    VG
    Conny

  • #2
    [HIGHLIGHT="SQL"]WITH Dates ( date_end ) AS
    ( SELECT '28.02.2010' UNION ALL
    SELECT '28.02.2011' UNION ALL
    SELECT '28.02.2012'
    )
    SELECT date_end
    FROM Dates
    WHERE YEAR (date_end) = YEAR (GETDATE ()) -1[/HIGHLIGHT]

    Comment


    • #3
      Versuchs mal mit
      Code:
      WHERE YEAR(Datumsfeld) = (YEAR(CURRENT_TIMESTAMP)-1)

      Comment


      • #4
        Nicht wirklich gefragt, aber vielleicht hilfreich bei großen Datenmengen und falls sowieso ein Index auf myDateField liegt:
        [highlight=sql]
        where myDateField
        between convert(datetime, (YEAR (GETDATE ())-1 )+ '0101', 112)
        and convert(datetime, (YEAR (GETDATE ())-1 )+ '1231', 112)
        [/highlight]

        Es sei mal dahin gestellt, wie der Date Range bestimmt wird. Jedenfalls sollte es in dem Teil am Ende ein Date(time~also gleicher Typ wie Tabellenspalte) Typ sein bzw. hier 2x fürs between. Der nackte Zugriff (ohne Jahresumrechung oder so) auf das fragliche Feld myDateField müsste aber den besten Index Zugriff erlauben.

        Ich bin drüber gestolpert, weil im Ursprungs Select tatsächlich genauso ein direkter Feldzugriff auf das Date Field erfolgte, in den beiden Antworten aber ein anderer Weg gewählt wurde, der bestimmt funktioniert und übersichtlich ist, evtl. Performanceverlust bringt.

        Hab grad kein MS SQL zur Hand, alles ungetestet und nur Vermutungen, z.B. die 112 muss evtl variiert werden.
        Gruß, defo

        Comment


        • #5
          Hallo

          dank Euch für die Tips. Ich hatte Ebis Lösung genommen und es funktioniert bestens.

          VG
          Conny

          Comment

          Working...
          X