Toon posts:

[ASP.NET/C#]DateTime.Now + Sequel server

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

De datum verkijg ik nu door: DateTime.Now en vervolgens deze in een MS Sequel server te zetten. Nu gebruikt DateTime.Now de waarden 17-01-2003 echter de sqlserver maakt gebruik van de notatie 01-17-2003.

Ik wil dus de huidige datum (goed) in mijn sequel server weg zetten. Vervolgens moet ik de datum ook nog eens kunnen sorteren in mijn datagrid. Dus als ik er een simpele string van de datum maakt gaat ook niet goed want dan sorteerd hij verkeerd.

Dus hoe kan ik mijn datum goed wegzetten en dan later sorteren?

[ Voor 7% gewijzigd door Verwijderd op 01-07-2003 11:09 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:17
Als je gebruik maakt van parameters in je INSERT query, dan zal de datum er wel automatisch goed in komen.

code:
1
2
3
4
5
SqlCommand cmd = new SqlCommand (conn);
cmd.CommandText = "INSERT INTO tabel (datumveld) VALUES (@p_datum)";
cmd.Parameters.Add ("@p_datum", SqlDbType.DateTime);
cmd.Parameters["@p_datum"]  = DateTime.Now;
cmd.ExecuteNonQuery();


Je kan ook gebruik maken van de SQL Server functie Get_Date() om de huidige datum te verkrijgen.
code:
1
INSERT INTO tabel (datumveld) VALUES (get_date())

https://fgheysels.github.io/


Verwijderd

Topicstarter
Bedankt whoami, het werkt nog niet helemaal, maar nu weet ik waar ik het kan zoeken.

  • exyll
  • Registratie: Januari 2002
  • Laatst online: 22-04 22:32
Sorteren doe je met een DataView en de SortString property op de juiste kolom te zetten.

Ramon Smits


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:17
Niet noodzakelijk.
Sorteren kan je ook direct met SQL doen.

Trouwens, ik denk dat de TS wil zeggen dat hij verkeerde sort-resultaten krijgt als hij het datatype van het betreffende veld van datetime naar string veranderd.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Klopt whoami, het sorteren zelf is geen probleem :-) maar ja maak je een string aan met
17-01-2003 en 1 met 16-02-2003. Dan sorteert hij de 2'de als kleinste en dat klopt dus niet helemaal :-)

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

DateTime.Now.ToString("yyyy-MM-dd") gebruiken om de datum door te geven?

Download my music on SoundCloud


Verwijderd

Topicstarter
Dat is een optie, maar ja dat is niet volgens de normale standaard met het weergeven van een datum.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:17
Nee, zoals ik al zei: maak gebruik van parameters. Dat is de beste, makkelijkste en flexibelste manier om je insert (of gelijk welk query-statement) van waardes te voorzien.
.NET zal dan alles zelf afhandelen en ervoor zorgen dat de waardes op de juiste manier in de DB komen.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:27

gorgi_19

Kruimeltjes zijn weer op :9

Exyll schreef op 01 July 2003 @ 13:14:
Sorteren doe je met een DataView en de SortString property op de juiste kolom te zetten.
Waarom moet je per se gebruik maken van een dataview? Deze accepteert afaik alleen een datatable / dataset als inputparameter.

Evengoed kan je het, afhankelijk van hoe je datalaag er uit ziet, ook een array sorteren.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Alleen ik krijg op onderstaande regel de volgende fout;

cmd.Parameters["@p_datum"] = DateTime.Now;

c:\inetpub\wwwroot\WebApplication1\PostNewIdea.aspx.cs(180): Cannot implicitly convert type 'System.DateTime' to 'System.Data.SqlClient.SqlParameter'

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:17
Je moet dan ook die waarde niet aan de parameter toekennen, maar aan de value van die parameter:
code:
1
cmd.Parameters["@p_datum"].Value = DateTime.Now;

https://fgheysels.github.io/


Verwijderd

Topicstarter
Oeps over heen gekeken :-) Maar even voor de duidelijkheid hij werkt perfect met Parameters nu!

Tnx Allemaal !! _/-\o_ _/-\o_ _/-\o_

[ Voor 70% gewijzigd door Verwijderd op 01-07-2003 14:02 ]


Verwijderd

Ik heb een tijdje lopen kloten om het voor elkaar te krijgen om een DateTime ook werkelijks ale een DateTime in een SQL database te zetten en niet als een varchar

Ik heb deze "oude" :P Post net gebruikt voor mijn applicatie om het volgende te fixen.

code:
1
2
3
4
5
6
7
SqlCommand MySqlCmd = new SqlCommand();
MySqlCmd.Connection = MySqlConn;
MySqlCmd.CommandText = "INSERT into UserInfo (UserName,HashedPassword,eMailAdress,RegistrationDate) VALUES ('"+thisUserName+"','"+HashedPassword+"','"+thisEmailAdress+"',@p_datum)";
MySqlCmd.Parameters.Add("@p_datum",SqlDbType.DateTime);
MySqlCmd.Parameters["@p_datum"].Value = DateTime.Now;
MySqlCmd.ExecuteNonQuery();
MySqlConn.Close();


Nu probeer is dus het een en andere met die timestamp, maar een ding wil nog niet helemaal werken, en dat is om de miliseconden te pakken te krijgen.
De volgende code geeft bij milliseconden een 0, maar Year geeft gewoon 2004 ...

MyDR1 is een DataReader ...........
myDT.ToString() geeft "18-7-2004 23:49:00"

code:
1
2
3
4
DateTime myDT = DateTime.Parse(MyDR1[0].ToString());
Label1.Text = "The milliseconds was " + myDT.Millisecond.ToString();
Label1.Text = " / The year was " + myDT.Year.ToString();
Label1.Text += " / " +myDT.ToString();


Het lijkt we wel heel toevallig als ik precies op 0 milliseconde deze code heb uitgevoerd B)
Niet dat ik vaak milliseconds zal gebruiken, maar het gaat er om dat ik het wil leren.

Iemand een idee waarom het niet werkt, of moet ik op een andere manier de DataTime uit de MyDR1 halen.

Verwijderd

Datetime

Date and time data from January 1, 1753, through December 31, 9999, with an accuracy of three-hundredths of a second, or 3.33 milliseconds.
MsSQL slaat dus de milliseconden niet accuraat op. Je zult waarschijnlijk naast het Datetime veld nog een extra veld moeten toevoegen met de milliseconde waarde. Dat veld zou dan een integer zijn.

  • tazzman
  • Registratie: Juli 2000
  • Laatst online: 05-01 10:48

tazzman

a real boardmonkey

Je kan ook inderdaad met de formatting opties de Datetime string opmaken naar ISO standaard en deze aan de SQL Server kant d.m.v. een CONVERT (aldan wel niet met een CAST) om te zetten naar ISO formaat en dan zo opslaan.

Bij alle OLTP en OLAP MS SQL Server databases die ik ontwerp, sla ik alle data op in ISO formaat.

Het nieuwe speelgoed: een Saab 9-3 Aero (absoluut, helemaal en compleet fantastisch....)

Pagina: 1