Je travaille sur une requête dans Sql Server 2005 où j'ai besoin de convertir une valeur en DateTime
variable en une varchar
variable en yyyy-mm-dd
format (sans partie de temps). Comment je fais ça?
303
Je travaille sur une requête dans Sql Server 2005 où j'ai besoin de convertir une valeur en DateTime
variable en une varchar
variable en yyyy-mm-dd
format (sans partie de temps). Comment je fais ça?
CONVERT
, voir la documentation MSDN .Réponses:
Avec Microsoft Sql Server:
la source
LEFT(.., 10)
place deCONVERT(CHAR(10), ...)
? Ceux qui travaillent avec les versions de SQL Server plus récentes que 2005 (!) Devraient également vérifier la réponse de Zar Shardan suggérant une solution basée sur laFORMAT(date_value, format_string)
fonction.FORMAT()
est trop lent par rapport àconvert(char(10),...)
Voici quelques sql de test pour tous les styles.
Voici le résultat
Faire
nvarchar(max)
plus court pour couper le temps. Par exemple:les sorties:
la source
dd-mm
oujun - 28
. Il y a une option ??Essayez ce qui suit:
Pour une date complète et pas seulement une date, faites:
Voir cette page pour convertir les styles:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
OU
Fonction CONVERT () de SQL Server
la source
SQL Server 2012 a une nouvelle fonction, FORMAT: http://msdn.microsoft.com/en-us/library/ee634924.aspx
et vous pouvez utiliser des chaînes de format d'heure de date personnalisées: http://msdn.microsoft.com/en-us/library/ee634398.aspx
Ces pages impliquent qu'il est également disponible sur SQL2008R2, mais je n'en ai pas un à portée de main pour tester si c'est le cas.
Exemple d'utilisation (datetime australien):
la source
Vous pouvez utiliser
DATEPART(DATEPART, VARIABLE)
. Par exemple:la source
Soit
Cast
ouConvert
:Syntaxe pour
CAST
:Syntaxe pour
CONVERT
:http://msdn.microsoft.com/en-us/library/ms187928.aspx
En fait, puisque vous avez demandé un format spécifique:
la source
- Cela vous donne l'heure en tant que 0 au format 'aaaa-mm-jj 00: 00: 00.000'
la source
Avec Microsoft SQL Server:
Utilisez la syntaxe pour CONVERT:
Exemple:
Pour le style, vous pouvez trouver plus d'informations ici: MSDN - Cast and Convert (Transact-SQL) .
la source
Essayer:
Plus sur les astuces MS SQL
la source
Essayez ce qui suit:
Ensuite, vous devrez remplacer le "." avec "-".
Voici un site qui aide http://www.mssqltips.com/tip.asp?tip=1145
la source
J'ai une longueur de données fixe de
char(10)
comme vous voulez un format de chaîne spécifique.la source
Le format OP mentionné datetime . Pour moi, la partie du temps gêne.
Je pense que c'est un peu plus propre de supprimer la partie temps (en castant datetime à ce jour) avant de formater.
la source
Voici comment je le fais:
CONVERT(NVARCHAR(10), DATE1, 103) )
la source
Vous pouvez convertir votre date dans de nombreux formats, la syntaxe est simple à utiliser:
Dans votre cas , je viens de convertir et de restreindre la taille de nvarchar (10) comme ceci:
Voir plus à: http://www.w3schools.com/sql/func_convert.asp
Une autre solution (si votre date est un Datetime) est un simple CAST :
la source
Essayez ce SQL:
la source
Pour SQL Server 2008+, vous pouvez utiliser CONVERT et FORMAT ensemble.
Par exemple, pour un horodatage de style européen (par exemple l'Allemagne):
la source
Vous n'avez pas dit quelle base de données, mais avec mysql, voici un moyen facile d'obtenir une date à partir d'un horodatage (et la conversion du type varchar devrait se produire automatiquement):
la source
Le moyen le plus court et le plus simple est:
la source
la source
la source
Écrire une fonction
la source
donnera
05/05/2020 10:41:05 AM
comme résultatla source
Vous ne dites pas quelle langue mais je suppose
C#/.NET
car il a unDateTime
type de données natif . Dans ce cas, convertissez-le simplement à l'aide de laToString
méthode et utilisez un spécificateur de format tel que:Cependant, je vous déconseille de l'utiliser dans une requête de base de données ou concaténé dans une instruction SQL. Les bases de données nécessitent l'utilisation d'une chaîne de formatage spécifique. Il est préférable de mettre à zéro la partie temps et d'utiliser le DateTime comme paramètre SQL si c'est ce que vous essayez d'accomplir.
la source