Avatar billede pham Nybegynder
10. august 2004 - 12:46 Der er 7 kommentarer og
2 løsninger

dato format konvertering

Hej

Jeg skal sætte en SqlDateTime Vaerdi_date ind i en MySQL database men SqlDateTime Vaerdi_date er i formatet mm-dd-yyyy hh:mm:ss og MySQL er i yyyy-mm-dd hh:mm:ss, hvordan laver jeg så min SqlDateTime Vaerdi_date om til det korrekte format så den kan sættes ind? Det skal også lige siges at der ikke kommer nogen fejl meddelse når jeg bruger nedenstående kode, den sætter bare 0000-00-00 00:00:00 i databasen også der hvor Vaerdi_date ikke har nogen dato men den er "null".

public void insert(String parameter, Byte Vaerditype, SqlDateTime Vaerdi_date)
    { 
       
        MySqlCommand ins = new MySqlCommand("INSERT INTO macsys VALUES('"+ parameter +"',"+ Vaerditype +",'"+ Vaerdi_date +"')", con);
        MySqlDataReader rdr = ins.ExecuteReader();
       
        rdr.Close();
    }

med venlig hilsen
Anders Hansen
Avatar billede wisen Nybegynder
10. august 2004 - 13:08 #1
.. du kan bruge DataTime.Format der kan du angive hvilket format du ønsker...
Avatar billede wisen Nybegynder
10. august 2004 - 13:10 #2
f.eks.

DateTime dt = new DateTime(2004,01,01,12,0,0);
string fmt = dt.Format("yyyy-MM-dd:hh:mm:ss");
Avatar billede arne_v Ekspert
10. august 2004 - 13:12 #3
Men måske var det ikke nogen dårlig ide at bruge Parameter's.

NB: Skal det ikke være ExecuteNonQuery i.s.f. ExecuteReader ?
Avatar billede pham Nybegynder
10. august 2004 - 13:37 #4
Jeg fik det til at virke med dette:

public void insert(String parameter, Byte Vaerditype, SqlDateTime Vaerdi_date)
    { 
        System.Console.WriteLine(Vaerdi_date);
       
        if(!Vaerdi_date.IsNull) {
        DateTime dt = new DateTime(Vaerdi_date.Value.Year, Vaerdi_date.Value.Month, Vaerdi_date.Value.Day, Vaerdi_date.Value.Hour, Vaerdi_date.Value.Minute, Vaerdi_date.Value.Second, Vaerdi_date.Value.Millisecond);
       
        MySqlCommand ins = new MySqlCommand("INSERT INTO macsys VALUES('"+ parameter +"',"+ Vaerditype +",'"+ dt.ToString("yyyy-MM-dd hh:mm:ss") +"')", con);
        MySqlDataReader rdr = ins.ExecuteReader();
       
        rdr.Close();
        }
    }

Den springer alle de poster over hvor Vaerdi_date indeholder et null i stedet for en dato. det skal ikke ske! :) hvad kan jeg gøre for at den vil godtage et null da jeg får denn fejl når jeg fjerner linien: if(!Vaerdi_date.IsNull)

Null

Unhandled Exception: System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.
  at System.Data.SqlTypes.SqlDateTime.get_Value()
  at MySQLConnect.insert(String parameter, Byte Vaerditype, SqlDateTime Vaerdi_
date) in c:\Documents and Settings\Godballe\My Documents\SharpDevelop Projects\P
roxyApplikation\MySQLConnect.cs:line 36
  at MSSQLConnect.connect() in c:\Documents and Settings\Godballe\My Documents\
SharpDevelop Projects\ProxyApplikation\MSSQLConnect.cs:line 28
  at DefaultNamespace.MainClass.Main(String[] args) in c:\Documents and Setting
s\Godballe\My Documents\SharpDevelop Projects\ProxyApplikation\Main.cs:line 18
Press any key to continue . . .
Avatar billede arne_v Ekspert
10. august 2004 - 13:51 #5
Du indsætter NULL eller springer over det felt (ved at angive eksplicit de felter der
skal indsættes).

Eksempler:

INSERT INTO macsys VALUES('abc',123,NULL)

INSERT INTO macsys (felt1, felt2) VALUES('abc',123)
Avatar billede pham Nybegynder
10. august 2004 - 13:55 #6
tak det virker fint, men i min mysql db står der ikke null men 0000-00-00 00:00:00
Avatar billede pham Nybegynder
10. august 2004 - 13:58 #7
undskyld det var mig der havde skrevet forkert. :)

Mange tak for hjælpen ligger i ikke et svar
Avatar billede wisen Nybegynder
10. august 2004 - 14:03 #8
1 stk. svar
Avatar billede arne_v Ekspert
10. august 2004 - 14:36 #9
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester