J'ai une table qui contient des formats de date différents:
######## DateTime ######## 10/05/2015 11/05/2015 1/5/2015 01/5/2014
Maintenant, ma question est que Comment puis-je sélectionner toutes les lignes en fonction de ce model \d{2}/\d{2}/\d{4}
le format du résultat avec ce model \d{4}/\d{2}/\{2}
? Le premier est dd/mm/yyyy
et je voudrais que le résultat soit yyyy/mm/dd
DECLARE @TABLE TABLE (Dates VARCHAR(20)) INSERT INTO @TABLE VALUES ('10/05/2015'), ('11/05/2015'), ('1/5/2015'), ('01/5/2014')
La requête suivante convertira toutes les valeurs en type de données de date SQL Server correct.
SELECT CONVERT(DATE, RIGHT('0000' + PARSENAME(REPLACE(Dates , '/','.'),1),4) + RIGHT('00' + PARSENAME(REPLACE(Dates , '/','.'),2),2) + RIGHT('00' + PARSENAME(REPLACE(Dates , '/','.'),3),2) ) FROM @TABLE
2015-05-10 2015-05-11 2015-05-01 2014-05-01
Une fois que vous avez obtenu les valeurs dans le type de date du server sql bien formaté, vous pouvez étendre la requête pour get la sortie requirejse yyyy/mm/dd
en procédant comme suit:
SELECT CONVERT(VARCHAR(10), CONVERT(DATE, RIGHT('0000' + PARSENAME(REPLACE(Dates , '/','.'),1),4) + RIGHT('00' + PARSENAME(REPLACE(Dates , '/','.'),2),2) + RIGHT('00' + PARSENAME(REPLACE(Dates , '/','.'),3),2) ), 111) FROM @TABLE
2015/05/10 2015/05/11 2015/05/01 2014/05/01
Dans votre cas, vous n'avez pas besoin d'utiliser des expressions régulières. Un simple comme devrait suffire.
... WHERE DateTime LIKE "__/__/____" ...