2016-12-27 3 views
2

J'ai une colonne varchar où certaines valeurs sont au format mm/dd/yyyy et d'autres dans yyyymmdd. Je souhaite convertir toutes les dates mm/dd/yyyy au format yyyymmdd. Quelle est la meilleure façon de procéder? MerciFormat de date SQL Server yyyymmdd

Le tableau est Employees et la colonne est DOB

+3

réelle '' Date'/colonnes DateTime'-valeur don pas de format. Voulez-vous dire que vous avez des colonnes qui contiennent des représentations textuelles de dates dans les colonnes 'char' /' varchar'? – Dai

+2

Ne stockez jamais les valeurs date/heure dans les colonnes varchar ... Utilisez plutôt les types de données appropriés. – jarlh

Répondre

6

Si l'on suppose votre colonne « date » est pas réellement une date.

Select convert(varchar(8),cast('12/24/2016' as date),112) 

ou

Select format(cast('12/24/2016' as date),'yyyyMMdd') 

Retours

20161224 
2

Dans SQL Server, vous pouvez faire:

select coalesce(format(try_convert(date, col, 112), 'yyyyMMdd'), col) 

Cette tente la conversion, en gardant la valeur précédente si elle est disponible.

Remarque: j'espère que vous avez appris une leçon sur le stockage des dates sous forme de dates et non de chaînes.

2

essayer ....

SELECT FORMAT(CAST(DOB AS DATE),'yyyyMMdd') FROM Employees; 
1
DECLARE @v DATE= '3/15/2013' 

SELECT CONVERT(VARCHAR(10), @v, 112) 

vous pouvez convertir tous les formats de date ou la date Format heure à aaaaMMjj sans délimiteurs

+3

Pourriez-vous ajouter un peu plus de détails? – Jonas