web-dev-qa-db-fra.com

Comment obtenir un format de date particulier ('jj-MMM-aaaa') dans une requête SELECT SQL Server 2008 R2

J'utilise la fonction CONVERT(data_type(length),expression,style) pour changer le format d'une date dans une requête SELECT. 

Déclarez @dt nvarchar (20) 

Sélectionnez @dt = Convert (nvarchar (20), SalesDate, 113) FROM SalesTable

Le format dont j'ai besoin est 'jj-MMM-aaaa' (par exemple. '05-juil-2013 '), mais je n'ai pas pu trouver le numéro de style approprié (par exemple, 113) pour ce format particulier. Quelqu'un peut-il m'aider avec ça s'il vous plaît? 

11

Essaye ça:

Declare @dt NVARCHAR(20)

Select 
    @dt = REPLACE(CONVERT(CHAR(15), SalesDate, 106),' ',' - ') 
FROM SalesTable
26
Abhishek Jain
select CONVERT(NVARCHAR, SYSDATETIME(), 106) AS [DD-MON-YYYY]

ou sinon

select REPLACE(CONVERT(NVARCHAR,GETDATE(), 106), ' ', '-')

les deux fonctionne bien

8
abcd123

Il ne semble pas que JJ-MMM-AAAA soit pris en charge par défaut (au moins, avec un tiret comme séparateur). Cependant, en utilisant la clause AS, vous devriez pouvoir faire quelque chose comme:

SELECT CONVERT(VARCHAR(11), SYSDATETIME(), 106) AS [DD-MON-YYYY]

Voir ici: http://www.sql-server-helper.com/sql-server-2008/sql-server-2008-date-format.aspx

6
Brett

Je pense que c'est la meilleure façon de le faire.

REPLACE(CONVERT(NVARCHAR,CAST(WeekEnding AS DATETIME), 106), ' ', '-')

Parce que vous n'êtes pas obligé d'utiliser varchar(11) ou varchar(10) qui peut poser problème à l'avenir.

4
Manish
select convert(varchar(11), transfer_date, 106)

m'a obtenu mon résultat souhaité de date au 07 mars 2018

Ma colonne transfer_date est une colonne de type date-heure et j'utilise SQL Server 2017 sur Azure.

1
SELECT Convert(varchar(10),CONVERT(date,'columnname',105),105) as "end";

OR

SELECT CONVERT(VARCHAR(10), CAST(event_enddate AS DATE), 105) AS [end];

retournera la date particulière dans le format de 'jj-mm-aaaa'

Le résultat serait comme ça ..

04-07-2016
1
Deepak Keynes