75 votes

Comment insérer datetime dans la table de base de données SQL ?

Comment puis-je insérer datetime dans la table de la base de données SQL ? Y a-t-il un moyen d'insérer cette requête à travers la commande insert en C# / .NET ?

1 votes

Dans cette discussion, la résolution pour datetime dans SQL server est trouvée stackoverflow.com/a/12957690/2120484

113voto

Thomas Points 42973

Les valeurs DateTime doivent être insérées comme si elles étaient des chaînes entourées par des guillemets simples :

'20100301'

SQL Server permet de nombreux formats de date acceptés et il devrait être le cas que la plupart des bibliothèques de développement fournissent une série de classes ou de fonctions pour insérer correctement les valeurs datetime. Cependant, si vous le faites manuellement, il est important de distinguer le format de la date en utilisant DateFormat et d'utiliser un format général :

Set DateFormat MDY --indique que le format général est Mois Jour Année

Insert Table( DateTImeCol )
Values( '2011-03-12' )

En définissant le format de date, SQL Server suppose maintenant que mon format est YYYY-MM-DD au lieu de YYYY-DD-MM.

SET DATEFORMAT

SQL Server reconnaît également un format générique qui est toujours interprété de la même manière : YYYYMMDD par exemple 20110312.

Si vous vous demandez comment insérer la date et l'heure actuelles en utilisant T-SQL, alors je recommanderais d'utiliser le mot-clé CURRENT_TIMESTAMP. Par exemple :

Insert Table( DateTimeCol )
Values( CURRENT_TIMESTAMP )

1 votes

Est-ce correct? Vous Set DateFormat MDY, mais plus tard vous dites que SQL Server suppose maintenant que mon format est YYY-MM-DD. Pourquoi SQL Server n'attend pas que votre format corresponde au Set DateFormat et recherche MM-DD-YYYY? Je ne dis pas que c'est incorrect (je ne sais pas), mais cela semble contre-intuitif.

3 votes

@JerryOL - La balise Set DateFormat MDY ne détermine que la façon dont SQL interprète l'ordre du mois et du jour, pas le format exact. Vous pouvez essayer vous-même. Si vous appelez Set DateFormat DMY, 2011-03-12 sera le 3 décembre. Si vous appelez Set DateFormat MDY, cette même date sera le 12 mars.

2 votes

@JerryOL - Au fait, j'aurais aussi pu utiliser YMD ou YDM et obtenir le même effet cependant je trouve que ces formats sont seulement utiles si vous ne transmettez pas l'année à quatre chiffres.

15voto

Abe Miessler Points 34869

Vous devrez avoir une colonne datetime dans une table. Ensuite, vous pouvez faire une insertion comme suit pour insérer la date actuelle :

INSERT INTO MyTable (MyDate) Values (GetDate())

Si ce n'est pas la date d'aujourd'hui, vous devriez pouvoir utiliser une chaîne et spécifier le format de la date :

INSERT INTO MyTable (MyDate) Values (Convert(DateTime,'19820626',112)) --6/26/1982

Vous n'avez pas toujours besoin de convertir la chaîne non plus, souvent vous pouvez simplement faire quelque chose comme :

INSERT INTO MyTable (MyDate) Values ('06/26/1982') 

Et SQL Server le comprendra pour vous.

8voto

bensiu Points 6306

Si vous avez l'heure actuelle en tête GETDATE() serait la fonction que vous recherchez

0voto

Sourabh Sharma Points 45

Pour se débarrasser de ces types d'erreurs.

Nous devrions déclarer DateTime comme une chaîne nvarchar() or varchar().

Parce que nous insérons des données et nous pouvons appliquer required-field-validation du côté Front-End.

Cela nous fera gagner du temps et évitera de travailler en double. Parce que nous insérons à partir de l'extrémité utilisateur. Et les vérifications doivent être faites du côté frontal. J'espère que vous comprenez ce que je veux dire. Profitez de la programmation...

-1voto

Ranatunge Points 1
myConn.Execute "INSERT INTO DayTr (dtID, DTSuID, DTDaTi, DTGrKg) VALUES (" & Val(txtTrNo) & "," & Val(txtCID) & ", '" & Format(txtTrDate, "yyyy-mm-dd") & "' ," & Val(Format(txtGross, "######0.00")) & ")"

Effectué en vb avec toutes les variables de type texte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X