Comment obtenir une date au format AAAA-MM-JJ format à partir d'une TSQL champ datetime?
Comment puis-je récupérer une date à partir de SQL Server dans YYYY-MM-DD
format? J'ai besoin que cela fonctionne avec SQL Server 2000 et jusqu'. Est-il un moyen simple de faire cela dans SQL Server ou serait-il plus facile de convertir programme après que j'ai récupérer le jeu de résultats?
J'ai lu le CAST et CONVERT sur Technet de Microsoft, mais le format que je veux n'est pas répertoriée et changer le format de date n'est pas une option.
- Le BOL description de 126 est un peu la confusion (jamais trouvé une explication pour le "T").
- Le "T" sépare la date de l'heure. Voir la norme ISO 8601 sur Wikipedia
Vous devez vous connecter pour publier un commentaire.
Limitation de la taille de la varchar les côtelettes de la partie heure que vous ne voulez pas.
126
signifie ISO8601.CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
alors vous voulez utiliser le code de style de la façon dont vous voulez que le datetime au format par la MSDN Docs (assurez-vous que vous regardez sous la date et l'heure styles.)De départ avec SQL Server 2012 (question d'origine est pour l'an 2000):
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
La forme que vous êtes après est répertoriée dans la documentation en ligne.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
Par exemple, essayez les solutions suivantes:
La
convert
fonction avec le spécificateur de format 120 vous donnera le format "aaaa-MM-jj HH:mm:ss", donc vous avez juste à limiter la longueur à 10 pour obtenir uniquement la partie date:Cependant, le format des dates est généralement de mieux à faire dans la couche de présentation plutôt que dans la base de données ou de la couche de gestion. Si vous retournez la date au format de la base de données, puis le code client à l'analyser, à une date encore si elle a besoin de faire des calculs sur elle.
Exemple en C#:
Pour AAAAMMJJ essayer
Je ne l'ai testé que sur SQLServer2008.
Un autre moyen...
Va aussi faire un truc sans "hacher rien off".
Au cas où quelqu'un veut le faire, le autre façon de contourner et trouve cela.
Cette fonction convertit une chaîne en allemand le format de date pour un objet datetime.
Pourquoi 104? Voir ici: http://msdn.microsoft.com/en-us/library/ms187928.aspx
Pour ceux qui voudraient le temps de la partie aussi (je l'ai fait), le fragment de code suivant peut aider à
Dans votre cast et convert lien, utilisez le style 126 ainsi:
CONVERT (varchar(10), DTvalue, 126)
Cela tronque le temps. Votre exigence pour l'avoir au format aaaa-mm-jj-dire qu'il doit être une chaîne de caractères type de données datetime.
Franchement si, je le ferais sur le client, sauf si vous avez de bonnes raisons de ne pas.
Si vous voulez l'utiliser comme une date au lieu d'un
varchar
nouveau par la suite, n'oubliez pas de les reconvertir:SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
Je voudrais utiliser:
À partir de SQL Server 2008, vous pouvez le faire:
CONVERT(date,getdate())
Vous pouvez également utiliser. C'est en utilisant le nouveau type de données
DATE
. Peut ne pas fonctionner dans toutes les versions précédentes, mais grandement simplifiée pour une utilisation en version ultérieure.À l'aide d'une instruction de CAS pour chacun de les convertir /cast fonctions fonctionne toujours pour moi:
Espère que cela a été utile. chagbert.
Cette solution fonctionne pour moi, simple et efficace (avec 126 trop)
Si votre source de format de date est tout foiré, essayez quelque chose le long des lignes de: