Je veux obtenir la date au format DDMMYYY
à partir d'un champ qui stocke la date au format YYYY-MM-DD Timestamp
. (Par exemple, '2018-11-09' devrait afficher '09Nov2018').
Je sais qu'une façon consiste à utiliser la fonction datepart
( https://docs.Microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql?view = sql-server-2017 ) qui peut extraire l'année, le mois et le jour individuellement et ensuite je peux les concaténer.
Edit: je ne veux pas utiliser getdate()
. Il y a une colonne qui a le format YYYY-MM-DD Timestamp
Et de cette colonne j'extraye 'DDMM2018'
. J'utilise:
concat
(
CONVERT(varchar, DATEPART(dd,columndate)),
CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) ,
CONVERT(varchar, DATEPART(year, columndate))
) AS trial
Cela me donne '9Nov2018'
Et non '09Nov2018'
. Je prévois de reconvertir ceci en `type de données 'car c'est ainsi que je veux le résultat.
Existe-t-il un autre moyen d'y parvenir?
Toutes les idées/suggestions très appréciées.
Voici un exemple utilisant GETDATE()
:
SELECT REPLACE(CONVERT(char(11), GETDATE(), 13),' ','');
Donne 12Nov2018
. Il y a trois jours, cela donnerait 09Nov2018
.
Pour exécuter cela sur votre table:
SELECT Trial = REPLACE(CONVERT(char(11), YOUR_COLUMN_NAME_HERE, 13),' ','')
FROM dbo.YOUR_TABLE_NAME_HERE;
Dans SQL Server 2012 et versions ultérieures, vous pouvez utiliser FORMAT()
mais, comme Tibor l'a suggéré, cela utilise plus de CPU (doublant approximativement le temps d'exécution dans mes tests ).
SELECT FORMAT(GETDATE(), 'ddMMMyyyy');