Datum und Uhrzeit in SQL-DB speichern

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Jules.

    Datum und Uhrzeit in SQL-DB speichern

    Hallo,

    ich habe hier ein Skript mit einem Eingabeformular. D.h. man kann Texte eingeben, sowie Datum und Uhrzeit.

    Die eingegebenen Texte, Datum, Uhrzeit sollen in einer DB (SQL) gespeichert werden und auf einer neuen Seite ausgegeben werden.

    Das speichern von den Texten funktioniert soweit. Die Texte werden auch ausgegeben.

    Allerdings werden Datum&Uhrzeit weder ausgegeben, noch gespeichert.

    Das ganze habe ich in VB-Script geschrieben in einer .asp:



    Quellcode

    1. <%@ LANGUAGE="VBSCRIPT" %>
    2. <%
    3. Text = Request.Form("Text")
    4. Picture = Request.Form("Picture")
    5. Datum = Request.Form("Datum")
    6. Zeit = Request.Form("Zeit")
    7. response.write (Datum&"<br>")
    8. response.write (Text&"<br>")
    9. response.write (Picture&"<br>")
    10. response.write (Zeit&"<br>")
    11. SET cnn = Server.CreateObject("ADODB.Connection")
    12. cnn.Open "Driver={SQL Server};Server=Servername;Uid=User;Pwd=Passwort;Database=database"
    13. uploadquestions ="insert into Tabellenname (Datum, Text, Picture, Zeit) values('"&Datum&"','"&Text&"','"&Picture&"','"&Zeit&"')"
    14. cnn.Execute(uploadQuestions)
    15. %>




    Kann mir jemand sagen, was ich hier machen muss, damit auch Zeit & Datum in meiner SQL-DB gespeichert werden ?

    Evtl. könnte es am Datentyp liegen. In meiner DB sind Zeit und Uhrzeit vom Datentyp Bigint.



    Viele Grüße
    Du übergibst Datum und Zeit falsch mit Hochkommas. Hochkommas symbolisieren das der Inhalt vom Typ String ist und das kannst Du nicht in ein Field das vom Typ BigInt ist schreiben. Normalerweise wäre das Literal für Datum in SQL das hier: #. Was aber eigentlich nur wirkt wenn das Field auch den db-Datentyp Date/DateTime (oder äquivalent).

    1. Lösungsansatz

    Lass bei Datum und Zeit auf jeden Fall die Hochkommans weg. Also so:

    [MySQL]
    "insert into Tabellenname (Datum, Text, Picture, Zeit) values("&Datum&",'"&Text&"','"&Picture&"',"&Zeit&")" [/MySQL]


    2. Lösungsansatz

    Wenn Lösungsansatz 1 nicht das Problem behebt, versuche mal die Werte zu konvertieren in einen passenden Datentyp ... vermute mal Long (weiss nicht aus dem Kopf was BigInt nun genau ist).

    [MySQL]
    "insert into Tabellenname (Datum, Text, Picture, Zeit) values (" & CLng(Datum) & ",'" & Text & "','" & Picture & "'," & CLng(Zeit) & ")" [/MySQL]


    3. Lösungsansatz

    Wenn Lösungsansatz 1 + 2 nicht das Problem beheben, dann stelle den Datentyp in der DB von BigInt auf Date/DateTime um und übergib die Werte so:

    [MySQL]
    "insert into Tabellenname (Datum, Text, Picture, Zeit) values (#" & Format(Datum, "yyyy-mm-dd") & "#,'" & Text & "','" & Picture & "',#" & Format(Zeit, "hh:mm:ss") & "#)" [/MySQL]

    Oder Alternativ:

    [MySQL]
    "insert into Tabellenname (Datum, Text, Picture, Zeit) values (DateValue(" & Cstr(Datum) & "),'" & Text & "','" & Picture & "', DateValue(" & Cstr(Zeit) & "))" [/MySQL]

    Bin mir jetzt nicht sicher ob es in SQL auch TimeValue gibt. Musst mal selber nachgucken, wenn ja verwende das für die Übergabe von Zeit.

    Hoffe das es hilft. ;)

    Gruß

    Rainer
    Alternativ kannst du auch folgendes Script verwenden.
    Es ist übersichtlicher in meinen Augen, und du kannst damit auch weniger falsch machen:

    VB.NET-Quellcode

    1. Set cnnDst = CreateObject("ADODB.Connection")
    2. Set rstDst = CreateObject("ADODB.Recordset")
    3. cnnDst.Open DBCS
    4. '-- Hier bekommst du die Tabellendefinition in ein RecordSet geladen
    5. rstDst.Open "Tabellenname", cnnDst, 2, 3, 2 'adOpenDynamic, , cmdTable
    6. With rstDst
    7. .AddNew
    8. .Fields("Text") = Text
    9. .Fields("Picture") = Picture
    10. .Fields("Datum") = Datum
    11. .Fields("Zeit") = Zeit
    12. .Update
    13. End With


    Was ich dir allerdings dringend empfehle, ist zu prüfen, ob die Eingaben auch wirklich ein Datum/Uhrzeit sind.

    Gruss Mono
    Das ist meine Signatur und sie wird wunderbar sein!