Frage des Formates?

IchHH

Datenbank-Guru
Beiträge
284
Hallo,

ich wollte eine Jahr aus einem Datumsfeld LEFT(Datum,4) mit einem dynamischen Jahresfeld (ausgehend vom aktuellem Jahr) in der Where Bedingung abgleichen. Dazu wollte ich mich der Formel YEAR bedienen (Year(GetDate())-1) das bekomme ich aber irgendwann ein TimeOut. Würde ich '2022' eingeben, bekäme ich sofort ergebnisse.

Ich versucht mich also mit der Formel CONCAT(CHAR(39),YEAR(GETDATE())-1,CHAR(39)) nur dann bekomme ich garkein Ergebnis. Wie würde es aber funktionieren?

Vielen Dank für eure Unterstützung.
 
Werbung:
Vielleicht schreibst Du mal deine genaue Abfrage hin weil beides mit einem select davor funktioniert tadellos. Übrigens kannst Du auch aus einem normalen Datumsfeld mit YEAR(Datum) das Jahr rausholen.
 
Nabend,

"Dazu wollte ich mich der Formel YEAR bedienen (Year(GetDate())-1) das bekomme ich aber irgendwann ein TimeOut" du bekommst bei sowas ein timeout? Oo
Du solltest vllt. deine where clause überprüfen,sowie deine Daten usw. Es würde schon helfen wenn die hier dein SQL Statement postest. :)
 
Hallo, ja das stimmt ich könnte auch mit Year(Datum) arbeiten, dass problem dabei ist, dass das vermeindliche Datumsfeld ein Nvarchar(8) Feld ist.
Zum TimeOut und der Where Clause, die sieht wie folgt aus.

SQL:
    SELECT DISTINCT
          [HandlingUnit]
          ,[Vertriebsbeleg]
          ,[Liefernr]
      FROM [dbo].[v_VR_TrackingKey]
    WHERE Land = 'DE'
    AND LEFT(Warenausgangsdatum,4)= Year(GetDate())-1
 
Bitte immer grundsätzlich explizit konvertieren.

NVARCHAR ist kein Datumsformat, warum ist das so?

Drei Möglichkeiten:
1) Lasse deine Spalte so und vergleiche mit einer Zeichenkette.

2) Konvertiere das Jahr aus deiner Spalte in eine Zahl und vergleiche mit einer Zahl.

3) Konvertiere deine Zeichenkette in ein Datum und vergleiche mit einem Datum.

Wir kennen das Format deines Datums nicht weil es bereits fix in eine Zeichenkette konvertiert und als solche gespeichert wurde. Ist der Aufbau immer identisch und ist sicher gestellt das CONVERT(INT,LEFT(Warenausgangsdatum,4)) immer einer Ganzzahl entspricht? Die Performance kann zwischen allen Varianten unterschiedlich sein, wie viele Datensätze hat die Tabelle? Gibt es auf der Spalte einen Index? (Der wird vermutlich nicht genutzt bei Konvertierung der Spalte)
 
Werbung:
Den Timeout habe ich noch nicht verstanden. Wo genau tritt der auf? Ich hab im SSMS noch nie einen Timeout bei einem T-SQL Statement bekommen.
 
Zurück
Oben