Comment récupérer une date de SQL Server au YYYY-MM-DD
format? J'ai besoin de cela pour travailler avec SQL Server 2000 et plus. Existe-t-il un moyen simple d'effectuer cela dans SQL Server ou serait-il plus facile de le convertir par programme après avoir récupéré le jeu de résultats?
J'ai lu CAST et CONVERT sur Microsoft Technet, mais le format que je veux n'est pas répertorié et changer le format de date n'est pas une option.
sql-server
tsql
Kinze
la source
la source
Réponses:
Limiter la taille des côtelettes varchar de la portion d'heure que vous ne voulez pas.
la source
la source
À partir de SQL Server 2012 (la question d'origine concerne 2000):
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
la source
Le formulaire que vous recherchez est répertorié dans la documentation en ligne du livre.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
Par exemple, essayez ce qui suit:
la source
La
convert
fonction avec le spécificateur de format 120 vous donnera le format "aaaa-MM-jj HH: mm: ss", il vous suffit donc de limiter la longueur à 10 pour obtenir uniquement la partie date:Cependant, le formatage des dates est généralement préférable dans la couche de présentation plutôt que dans la base de données ou la couche métier. Si vous renvoyez la date formatée à partir de la base de données, le code client doit à nouveau l'analyser à une date s'il doit effectuer des calculs à ce sujet.
Exemple en C #:
la source
Pour YYYYMMDD, essayez
Je n'ai testé que sur SQLServer2008.
la source
Une autre façon ...
la source
Pour ceux qui voudraient également une partie du temps (je l'ai fait), l'extrait de code suivant peut aider
la source
Fera également l'affaire sans "couper quoi que ce soit".
la source
Au cas où quelqu'un voudrait le faire dans l' autre sens et le trouverait.
Cela convertit une chaîne au format de date allemand en un objet datetime.
Pourquoi 104? Voir ici: http://msdn.microsoft.com/en-us/library/ms187928.aspx
la source
Dans votre lien de conversion et de conversion, utilisez le style 126 ainsi:
CONVERT (varchar(10), DTvalue, 126)
Cela tronque le temps. Votre exigence de l'avoir en aaaa-mm-jj signifie qu'il doit s'agir d'un type de données de chaîne et de datetime.
Franchement, je le ferais sur le client, sauf si vous avez de bonnes raisons de ne pas le faire.
la source
Si vous souhaitez l'utiliser comme date au lieu d'une date
varchar
après, n'oubliez pas de la reconvertir:la source
Je ne sais pas pourquoi le moyen le plus simple a été ignoré / omis dans les réponses ci-dessus:
Je préfère la seconde car quelle que soit la langue que vous parlez, vous comprendrez quelle date c'est!
De plus, SQL Server le comprend toujours lorsque vous l'envoyez à votre procédure de sauvegarde, quels que soient les formats régionaux définis sur les ordinateurs - j'utilise toujours l'année complète (aaaa), le nom du mois (MMM) et le format 24 heures (HH majuscule) pendant une heure dans ma programmation.
la source
SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
la source
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 considérablement simplifié pour une utilisation dans une version ultérieure.la source
J'utiliserais:
la source
la source
À partir de SQL Server 2008, vous pouvez le faire:
CONVERT(date,getdate())
la source
Semble inutile de faire des choses étranges, si vous voulez que votre date soit séparée par une barre oblique. Échapper juste avec une barre oblique inverse. Sinon, vous vous retrouverez avec un point.
Testé sur SQL Server 2016
la source
L'utilisation d'une instruction CASE pour chacune des fonctions de conversion / conversion fonctionne toujours pour moi:
J'espère que cela vous a été utile. chagbert.
la source
Cette solution fonctionne pour moi, simple et efficace (avec 126 aussi)
la source
Si votre format de date source est tout foiré, essayez quelque chose comme:
la source
la source