如何在SQL Server中将字符串日期转换为另一种日期格式?

时间:2014-12-17 12:09:08

标签: sql sql-server sql-server-2008

我有一个以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  '__-___-__'

1 个答案:

答案 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