我有一个包含不同类型日期格式的表:
########
DateTime
########
10/05/2015
11/05/2015
1/5/2015
01/5/2014
现在我的问题是,如何根据此模式选择所有行\d{2}/\d{2}/\d{4}
使用此模式\d{4}/\d{2}/\{2}
的结果格式?
第一个是dd/mm/yyyy
,我希望结果为yyyy/mm/dd
答案 0 :(得分:1)
DECLARE @TABLE TABLE (Dates VARCHAR(20))
INSERT INTO @TABLE VALUES
('10/05/2015'),
('11/05/2015'),
('1/5/2015'),
('01/5/2014')
以下查询将所有值转换为正确的sql server日期数据类型。
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
在格式良好的sql server日期类型中获取值后,您可以通过执行以下操作来扩展查询以获取所需的输出yyyy/mm/dd
:
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
答案 1 :(得分:0)
在您的情况下,我不需要使用正则表达式。一个简单的LIKE就足够了。
... WHERE DateTime LIKE "__/__/____" ...