2010-05-30 10 views
3

J'ai cette chaîne: '30/05/2010 ', et je voudrais l'entrer dans un champ smallDatetime. Dans la base de données, il devrait ressembler à quelque chose comme ça 2010-05-30 15:33:25 Any Idea comment?sql serveur convertir la chaîne à datetime

TY

+1

Tous chance que vous pouvez le convertir côté client d'abord? Typiquement, la plupart des langages de programmation et des runtimes ont de bien meilleurs moyens de le faire que le moteur de base de données. –

+0

J'espérais éviter cette solution ... –

Répondre

5

utilisation

select convert(smalldatetime,'30/05/2010',103) 
+2

Cette page liste tous les formats de date/heure supportés par la fonction de conversion: http://msdn.microsoft.com/en-us/library/ms187928.aspx –

+0

merci beaucoup. –

0

Vous devez utiliser le type de champ datetime si vous voulez dans ce format 2010-05-30 15:33:25. Si vous voulez uniquement la date, utilisez le type date uniquement.

0

Vous pouvez utiliser cast('05/30/2010' as smalldatetime).

Si vous devez avoir le temps exact 15:33:25, vous pouvez utiliser plusieurs appels dateadd, par ex. select dateadd(hh, 15, cast('05/30/2010' as smalldatetime)) renvoie 2010-05-30 15:00:00.

+0

Mais ma chaîne est le 30/05/2010 et non le 30/05/2010. cast n'a pas fonctionné sur ma chaîne. –

+0

Cest en raison de différents paramètres de culture. –

1
SET DATEFORMAT DMY 
SELECT CAST('30/05/2010' as smalldatetime) 

D'où voulez-vous que l'aspect temporel provienne? La conversion ci-dessus ajoutera 00:00 (minuit) pour smalldatetime parce que:

  • la chaîne n'a pas d'informations de temps
  • smalldatetime résout à une minute résolution