PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Microsoft SQL Server Mngmt Datumsfunktion


Hardcoregamer
2010-04-08, 09:07:00
Hallo,

Ich arbeite hier gerade mit dem Microsoft SQL Server Mangement Studio und bin auf der suche nach einer Formel.

Ich habe ein Feld [CreationDate] wo z.B. dieser Wert drin steht: '15.04.2008 00:00:00'

Jetzt suche ich eine Formel die mir nur die Daten anzeigt die nicht älter als 4 Wochen, vom heutigen Tag an, zurück liegen.

Wie ist der Ansatz?


Zum testen hatte ich den Wert mal fest auf den 01.01.2010 gesetzt:

[MaterialType]= 'HALB' AND ((MaterialNumber between '08999999' AND '99999999' AND LEN(MaterialNumber) = 8) OR (MaterialNumber between 'M0000000' AND 'MZZZZZZZ' AND LEN(MaterialNumber) = 8) OR (MaterialNumber between 'C0000000' AND 'CZZZZZZZ' AND LEN(MaterialNumber) = 8) OR (MaterialNumber between 'M0000000X' AND 'MZZZZZZZX' AND LEN(MaterialNumber) = 9) OR (MaterialNumber between 'M0000000Y' AND 'MZZZZZZZY' AND LEN(MaterialNumber) = 9) OR (MaterialNumber between '00000000Y' AND '99999999Y' AND LEN(MaterialNumber) = 9) OR (MaterialNumber between 'PE000000' AND 'PE999999' AND LEN(MaterialNumber) = 8)) AND [CreationDate] >'01.01.2010 00:00:00'

Im Prinzip ist nur der rote Teil interessant. den muß ich noch ändern. Der Rest funktioniert soweit.


Gruß
Hardcoregamer

Malabolge
2010-04-08, 12:17:12
Hallo,

Ich arbeite hier gerade mit dem Microsoft SQL Server Mangement Studio und bin auf der suche nach einer Formel.

Ich habe ein Feld [CreationDate] wo z.B. dieser Wert drin steht: '15.04.2008 00:00:00'

Jetzt suche ich eine Formel die mir nur die Daten anzeigt die nicht älter als 4 Wochen, vom heutigen Tag an, zurück liegen.

Wie ist der Ansatz?


Zum testen hatte ich den Wert mal fest auf den 01.01.2010 gesetzt:

[MaterialType]= 'HALB' AND ((MaterialNumber between '08999999' AND '99999999' AND LEN(MaterialNumber) = 8) OR (MaterialNumber between 'M0000000' AND 'MZZZZZZZ' AND LEN(MaterialNumber) = 8) OR (MaterialNumber between 'C0000000' AND 'CZZZZZZZ' AND LEN(MaterialNumber) = 8) OR (MaterialNumber between 'M0000000X' AND 'MZZZZZZZX' AND LEN(MaterialNumber) = 9) OR (MaterialNumber between 'M0000000Y' AND 'MZZZZZZZY' AND LEN(MaterialNumber) = 9) OR (MaterialNumber between '00000000Y' AND '99999999Y' AND LEN(MaterialNumber) = 9) OR (MaterialNumber between 'PE000000' AND 'PE999999' AND LEN(MaterialNumber) = 8)) AND [CreationDate] >'01.01.2010 00:00:00'

Im Prinzip ist nur der rote Teil interessant. den muß ich noch ändern. Der Rest funktioniert soweit.


Gruß
Hardcoregamer

sthet der WErt als Datetime oder als Textwert im Feld ?

als Datetime-Feld: AND [CreationDate] >'01.01.2010' - müsste nur das datum in der Form dd.mm.yyyy passen

Hardcoregamer
2010-04-08, 13:29:16
Jein ;) Es sollte ja variabel sein und kein festes Datum da drin stehen.

Zu deiner Frage: Ja, es scheint ein Datetime Feld zu sein.

Ich muß doch das heutige Datum minus 4 Wochen nehmen.
Also stell ich mir das jetzt so ungefähr vor:

AND [CreationDate] > [Heutiges Datum] - 4 Wochen

Wie setze ich das um?

Hardcoregamer
2010-04-08, 14:57:07
Ich bearbeite dort ja nur die Tabellen.

Kann ich dann überhaupt das aktuelle Datum abfragen ohne es vorher deklariert zu haben, bzw ohne das es ein DatumsFeld in dieser Tabelle ist?

Zum modifizieren fehlt mir leider die Berechtigung.

So langsam gehen mir die Ideen aus.

robobimbo
2010-04-08, 19:20:23
Du willst die Funktion Datediff verwenden: http://msdn.microsoft.com/de-de/library/ms189794.aspx