Datum Uhrzeit

freshman

SQL-Guru
Beiträge
100
Mein Statement wächst, und somit auch die Probleme :-)
Also, ich will mir Datensätze anzeigen lassen, die HEUTE
(in Oracle gibt es 'systime') angelegt wurden anzeigen lassen.
Gibt es sowas wie systime im MS SQL Server 2005? Die Abfrage soll ja täglich ausgeführt werden, würde mir vieles erleichtern (da ich immer das aktuelle Datum brauche)!
Weiterhin hab ich das Problem, das in dem Feld, das als Datumsfeld angelegt wurde folgendes Format verwendet wurde:
'2002-12-30 00:00:00.000'
Uhrzeit will ich aber in der Abfrage gar nicht brücksichtigen!

Danke
freshman
 
Werbung:
AW: Datum Uhrzeit

Hallo freshman,

es gibt im SQL-Server das GetDate() was dir den Aktuellen Datetime-Wert zurückgibt.

Nur das Datum zu speichern wird mit den Datumstypen von MS-SQL nicht gehen.

Es gibt die Datentypen

Datetime (Speichert mit einer genauigkeit von 300stel-Sekunden)

und

Smalldatetime (Speichert mit einer genauigkeit von 1 Minute)

Such mal in der Hilfe nach CAST, CONVERT,GETDATE, DATEPART und DATEDIFF. Das sind ein pahr Datums und Konverter-Funktionen die dir weiterhelfen könnten.

Alternativ kannst du das Datum natürlich auch als Text abspeichern.

Gruß Charly
 
AW: Datum Uhrzeit

Merci :-)
nun kennst ja schon ein wenig mein Statement :-)

Um das Datum in der WHERE-Klausel abzufragen, gehe ich wie folgt vor:
_______________________________________________
DECLARE @DateNow AS nvarchar(12)
SET @DateNow = CONVERT (char, GETDATE(), 104)
_______________________________________________

Dann kommt mein SELECT, dann ein INNERJOIN
Dann die WHERE - Klausel
_________________________________________________
'WHERE CONVERT (char, INV1.DocDate, 104) = @DateNow
___________________________________________________


bekomm ich die Fehlermeldung, das die Skalarvariable @DateNow deklariert werden muss. Aber das hab ich doch oben gemacht???!!!!!

Danke, freshman
 
AW: Datum Uhrzeit

Hallo freshman,

hast du irgendwo ein GO dazwischen. Das GO beendet den aktuellen Batch. Also sind die Variablen auch nicht mehr gültig.

'WHERE CONVERT (char, INV1.DocDate, 104) = @DateNow

Du musst die Variable mit dem String verketten.

etwa so:

Code:
'WHERE CONVERT (char, INV1.DocDate, 104) = ' + @DateNow + ';' ...

Gruß Charly

PS: Mein kleiner Sohn liegt seit gestern im Krankenhaus. Kann also sein das ich nicht immer sofort Antworten kann. Fahre jetzt wieder hin.
 
AW: Datum Uhrzeit

OHA, schau ich mir an,
aber das Go hab ich nur oben bei
USE DATABASE
GO

Danach nicht mehr

ALLES ALLES GUTE für Deinen Sohn, ich hoffe inständig das es nichts schlimmes ist (habe selber 4 Kinder, fühle mit Dir)
 
AW: Datum Uhrzeit

Ne, das war es noch nicht

DECLARE @DateNow AS nvarchar(12)
SET @DateNow = CONVERT (char, GETDATE(), 104)

Print @DateNow

Ergebniss: Datum von Heute
-------------------------------------------------------------------------------
DECLARE @DateNow AS nvarchar(12)
SET @DateNow = '30.12.2002'
Print @DateNow

Ergebniss: 30.12.2002


'WHERE CONVERT (char, INV1.DocDate, 104) = ' + @DateNow + ';'
müsste eigentlich 7 Ergebnisse anzeigen (bei @DateNow = 30.12.2002), zeigt aber NULL an, kopiert auch keins in das Textfile, aber immerhin bekomm ich keine Fehlermeldung mehr :-)... dat das evtl .it nvarchar oder so zu tun??

DANKE
 
AW: Datum Uhrzeit

Ergänzung:

DECLARE @DateNow AS nvarchar(12)
SET @DateNow = '30.12.2002'

'WHERE CONVERT (char, INV1.DocDate, 104) = ' '+ @DateNow + ' ';'

Print @DateNow
Ergebniss: 30.12.2002

Sollte 7 Datensätze kopieren!
0 Zeilen kopiert, 7 Zeilen betroffen



mmmmmmmmmmmmmhhhhhhhhhhhhhhhhhhhhhhhh??????????????
 
AW: Datum Uhrzeit

Hallo Freshman,

poste mir mal den aktuellen Stand.

Ich gehe mal davon aus dass es ohne WHERE funktioniert. Also müssen wir nur noch den Datumsvergleich anpassen.

Gruß Charly.
 
AW: Datum Uhrzeit

Wie der Meister befiehtl :-) leicht abgewandelt und gekürzt, aber ich denke, man muss keine 25 Felder hier reinsetzen :-)

USE DB
GO

DECLARE @DateNow AS nvarchar(12)
SET @DateNow = CONVERT(char, GETDATE(), 104)
DECLARE @cmdStr AS nvarchar(1000)
SET @cmdStr = 'bcp ' +
'"SELECT T1.DocEntry AS T1DocEntry, ' +
'T2.DocEntry AS T2DocEntry, ' +
'FROM DB.dbo.T1 INNER JOIN DB.dbo.T2 ON T1.DocEntry = T2.DocEntry ' +
'WHERE CONVERT (char, INV1.DocDate, 104) = ' ' + @DateNow +' ' ;" ' +
'queryout ' +
'"c:\test.txt" ' +
'-w -t"| " -T -S ;'

EXEC xp_cmdshell @cmdSTR
--PRINT @DateNow

soweit klappt es, nur das mit der Datumsabfrage noch nicht.

Danke DIr mal wieder im Voraus
 
AW: Datum Uhrzeit

Hallo freshmann,

es sind doch 3 '

Code:
USE DB
GO
 
DECLARE @DateNow AS [B][COLOR=red]nvarchar(10)[/COLOR][/B]
SET @DateNow = CONVERT(char, GETDATE(), 104)
DECLARE @cmdStr AS nvarchar(1000)
SET @cmdStr = 'bcp ' + 
'"SELECT T1.DocEntry AS T1DocEntry, ' +
'T2.DocEntry AS T2DocEntry, ' +
'FROM DB.dbo.T1 INNER JOIN DB.dbo.T2 ON T1.DocEntry = T2.DocEntry ' +
'WHERE CONVERT (char, INV1.DocDate, 104) = [COLOR=red][B]''' + @DateNow + '''[/B][/COLOR] ;" ' + 
'queryout ' + 
'"c:\test.txt" ' + 
'-w -t"| " -T -S ;' 
 
EXEC xp_cmdshell @cmdSTR
--PRINT @DateNow

Wenn du nur 2 Hochkommata benutzt wird folgender String erzeugt:

Code:
... WHERE CONVERT (char, DocDate, 104) = ' + @DateNow + '; ...

Bei 3 Hochkommata wird dann die Variable richtig eingebunden:

Code:
... WHERE CONVERT (char, DocDate, 104) = '09.11.2010'; ...

Ich habe noch die Länge von @DateNow auf 10 gesetzt.

Gruß Charly
 
AW: Datum Uhrzeit

COOL,
aber ich könnte schwören, das ich das auch ausprobiert habe (hattest ja geschrieben, 2 oder 3 ') aber egal, TUT :-)
mmmmhhhhh, nun hab ich gar kein offenes Thema, bin ERSTMAL ;) zufrieden, das funzt!
DANKE DANKE DANKE, aber sag mal, was machst Du beruflich? Nur SQL ?
Und ganz wichtig:
Alles gute für Deinen Sohnemann!
Werde mal schauen, und mich intensiver mit SQL beschäftigen, macht ja doch Spaß!
ich meld mich wieder (nimm das nicht als Drohung!)

freshman
 
AW: Datum Uhrzeit

ha, zu Voreilig, SORRY,
aber je mehr man sich damit beschäftigt, umso mehr Fragen kommen auf:

Schau mal, ich hab in der Ausgabedatei das Feldtrennzeichen | genutzt, nun sagt mir der AS400 Pansen, das geht nicht, er braucht zum Import einen TAB ....... reicht dann:

'-w -t" | " -T -S ;' (hier mit Pipe)

'-w -t" " -T -S ;' (wäre das mit TAB?)


oder?
DANKE
freshman
 
Werbung:
Zurück
Oben