1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Datum Uhrzeit

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von freshman, 5 November 2010.

  1. freshman

    freshman Datenbank-Guru

    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
     
  2. Charly

    Charly Datenbank-Guru

    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
     
  3. freshman

    freshman Datenbank-Guru

    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
     
  4. Charly

    Charly Datenbank-Guru

    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.

    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.
     
  5. freshman

    freshman Datenbank-Guru

    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)
     
  6. freshman

    freshman Datenbank-Guru

    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
     
  7. freshman

    freshman Datenbank-Guru

    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??????????????
     
  8. Charly

    Charly Datenbank-Guru

    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.
     
  9. freshman

    freshman Datenbank-Guru

    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
     
  10. Charly

    Charly Datenbank-Guru

    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
     
  11. freshman

    freshman Datenbank-Guru

    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
     
  12. freshman

    freshman Datenbank-Guru

    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
     
  13. Charly

    Charly Datenbank-Guru

    AW: Datum Uhrzeit

    Hallo freshman,

    TAB ist Standard

    oder "\t" ist auch TAB

    Gruß Charly
     
Die Seite wird geladen...

Diese Seite empfehlen