Announcement

Collapse
No announcement yet.

Explizites Einfügen eines Datums

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

  • Explizites Einfügen eines Datums

    hallo,
    ich möchte in eine MS SQL-Datenbank mittels Insert ein Datum einfügen, wobei das Feld als SmallDateTime definiert ist.
    Bei MS Access war das folgendermaßen:
    insert #01/01/01# ...

    Nun bei MS SQL 7.0 bekomme ich das einfach nicht hin, sage ich
    insert '2002/16/01 07:15:32' ...
    stolpert er über die Zeitangabe, die aber dringend notwendig ist.
    Wer kann mir weiterhelfen?

  • #2
    Hallo,

    der SQL Server interpretiert nur das ISO-Datumsformat YYYYMMDD völlig unabhängig von allen Länder- und Spracheinstellung immer in der exakt gleichen Art und Weise. Das Standard-Datumsformat kann über SET DATEFORMAT überschrieben werden, wenn die Standardkonfiguration des SQL Servers geändert wurde.

    Mit der Standardkonfiguration ist der folgende Test erfolgreich:
    <pre>
    USE tempdb
    GO
    CREATE TABLE DatumTest (
    Nr INTEGER NOT NULL IDENTITY PRIMARY KEY,
    Datum SMALLDATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP)
    GO
    INSERT INTO DatumTest DEFAULT VALUES
    GO
    INSERT INTO DatumTest (Datum) VALUES ('17.01.2002 06:58:00')
    GO
    SELECT * FROM DatumTest
    </pre>
    Als Ergebnis erhalte ich:
    <pre>
    Nr Datum
    ----------- ------------------------------------------------------
    1 2002-01-17 06:58:00
    2 2002-01-17 06:58:00

    (2 row(s) affected)
    </pre&gt

    Comment


    • #3
      hallo,<BR>
      das ist sehr schön, so bekomme ich das auch hin, aber <BR>
      mein problem ist doch nicht so einfach zu lösen. <BR>
      Ich habe folgende SQL - Prozedure: <BR>
      da Server- und Datenbankname erst zur Ausführungszeit bekannt werden, wird die Insert-Anweisung erst hier als ZK zusammengebastelt. Nur dafür muss auch Parameter 8 (der als DateTime übergeben wird) in ein String umgewandelt werden und beim Ausführen der Insert-Anweisung aber als Datum erkannt werden. Und das ist mein Problem!
      <BR>
      <PRE>
      CREATE PROCEDURE CF_BER_Insert12EZDB
      @Server varchar(30),
      @DataBase varchar(30) ,
      @p2 integer, @p3 tinyint, @p4 tinyint, @p5 integer, @p6 tinyint, @p7 integer, @p8 datetime

      AS
      declare @SQLErfassung nvarchar(800)
      ---------------------------------------------------------------------------------------------------------ErgebnisseAllgemein----------------------------------------------------------------------------
      set @SQLErfassung = 'insert into '+@server+'.'+@Database+'.dbo.PresentErstZweitstim men
      ( ErgebnisId, EZK, PKZ, Id, Lp, Sti, WDatum)
      Values ('+Str(@p2)+','+Str(@p3)+','+Str(@p4)+','+Str(@p5) +','+Str(@p6)+','+Str(@p7)+','+<B>DateTimeToStr<B> (@p8)'
      exec sp_executesql @SQLErfassung
      if @@error > 0
      begin
      RAISERROR ('Fehler bei der Uebertragung der Tabelle Ergebnisse',16,1)
      en

      Comment


      • #4
        <body>
        <tt>Hallo Cornelia,</tt><tt></tt>
        <p><tt>versuchs mal mit ... <b>CONVERT(VARCHAR,@p8,113)</b></tt><tt></tt>
        <p><tt>Der letzte Parameter (113) ist optional und steuert das Format.
        Kannst du in der Online-Hilfe zum SQL-Server finden</tt>
        <br><tt>(CAST und CONVERT)</tt><tt></tt>
        <p><tt>Gru&szlig;</tt><tt></tt>
        <p><tt>Thomas</tt>
        </body&gt

        Comment

        Working...
        X