web-dev-qa-db-fra.com

FORMAT DE DATETIME SQL SERVER

En étudiant SQL Server, je ne suis pas sûr de quelque chose:

Un champ datetime avec la valeur: 2012-02-26 09:34:00.000

Si je choisis hors de la table en utilisant:

CAST(dob2 AS VARCHAR(12) ) AS d1

Il le formate comme suit: Feb 26 2012

Ce que je ne sais pas de son comment ou pourquoi SQL Server formate DateTime comme ça. Si vous utilisez datetime2 ce n'est pas le cas - quelqu'un sait pourquoi?

14
Ian

Le format de date par défaut dépend du paramètre de langue du serveur de base de données. Vous pouvez aussi le changer par session , comme:

set language french
select cast(getdate() as varchar(50))
-->
févr 8 2013 9:45AM
7
Andomar

essaye ça:

select convert(varchar, dob2, 101)
select convert(varchar, dob2, 102)
select convert(varchar, dob2, 103)
select convert(varchar, dob2, 104)
select convert(varchar, dob2, 105)
select convert(varchar, dob2, 106)
select convert(varchar, dob2, 107)
select convert(varchar, dob2, 108)
select convert(varchar, dob2, 109)
select convert(varchar, dob2, 110)
select convert(varchar, dob2, 111)
select convert(varchar, dob2, 112)
select convert(varchar, dob2, 113)

refernces: http://msdn.Microsoft.com/en-us/library/ms187928.aspx

http://www.w3schools.com/sql/func_convert.asp

7
SQLGuru

Compatibility Supports _ Indique que Sous le niveau de compatibilité 110, le style par défaut des opérations CAST and CONVERT sur les types de données time et datetime2 est toujours 121. Si votre requête repose sur l'ancien comportement , utilisez un niveau de compatibilité inférieur à 110 ou spécifiez explicitement le style 0 dans la requête concernée.

Cela signifie que par défautdatetime2estCAST as varcharà121 format. Pour ex; Les formats col1etcol2 (ci-dessous) sont identiques (autres que les 0 à la fin)

SELECT CONVERT(varchar, GETDATE(), 121) col1,
       CAST(convert(datetime2,GETDATE()) as varchar) col2,
       CAST(GETDATE() as varchar) col3

DÉMO DE FIDDLE SQL

--Results
COL1                    | COL2                          | COL3
2013-02-08 09:53:56.223 | 2013-02-08 09:53:56.2230000   | Feb 8 2013 9:53AM

Pour votre information, si vous utilisez CONVERT au lieu de CAST, vous pouvez utiliser un troisième paramètre pour spécifier certains formats énumérés ici sur MSDN

5
Kaf

Dans MS SQL Server, vous pouvez faire:

SET DATEFORMAT ymd
1
ch2o
case when isdate(inputdate) = 1 
then convert(datetime, cast(inputdate,datetime2), 103)
else
case when isdate(inputdate) = 0 
then convert(datetime, cast(inputdate,datetime2), 103)
0
jai

Ceci est mon utilisation préférée de 112 et 114 Select (convert (varchar, getdate (), 112)) + replace (convert (varchar, getdate (), 114), ':', '')) en tant que 'Getdate ( ) 112 + 114 ou YYYYMMDDHHMMSSMSS '

Résultat: Getdate () 112 + 114 ou YYYYMMDDHHMMSSSS

20171016083349100

0
Hank Freeman