我有一个以String格式存储日期的列,如(11/01 / 2010,2014-04-08,14-Oct-14)。
我想以日期时间/日期格式转换所有这种类型的字符串日期(2014年12月16日下午3:40)
我正在尝试那样
update #test set new_CHQ_DATE = CONVERT(varchar(20), CHQ_DATE, 105) where CHQ_DATE like '__/__/____'
update #test set new_CHQ_DATE = CONVERT(varchar(20), CHQ_DATE, 105) where CHQ_DATE like '____-__-__'
update #test set new_CHQ_DATE = CONVERT(varchar(20), CHQ_DATE, 105) where CHQ_DATE like '__-___-__'
卜
答案 0 :(得分:2)
您的样本似乎有效,但它依赖于您提前知道人们可能输入日期的各种不同方式。 如果字符串基本上是任何NORMAL日期可识别的格式,SQL Server在将字符串转换为日期方面相当不错。 这个查询似乎或多或少地得到了所有这些(假设CHQ_DATE是某种VARCHAR而new_CHQ_DATE是DATETIME列):
SET DATEFORMAT dmy;
GO
UPDATE #Test
SET new_CHQ_DATE = CONVERT(VARCHAR(20), CHQ_DATE, 105)
WHERE
ISDATE(CHQ_DATE) = 1;
--reset DATEFORMAT back to whatever it was