如何将字符串转换为日期T-SQL?

时间:2012-04-24 19:02:35

标签: tsql sql-server-2005

如何在T-SQL中将字符串转换为日期?

我的测试用例是字符串:'24.04.2012'

6 个答案:

答案 0 :(得分:122)

CONVERT(datetime, '24.04.2012', 104)

应该做的伎俩。有关详细信息,请参阅此处:"CAST and CONVERT (Transact-SQL)"

答案 1 :(得分:25)

Microsoft SQL Date Formats

CONVERT(DateTime, DateField, 104)

答案 2 :(得分:15)

这是一个运作良好的解决方案。基本语句包含内联try-parse:

SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result;

以下是我们在生产版本中实施的内容:

UPDATE dbo.StagingInputReview
 SET ReviewedOn = 
     ISNULL(TRY_PARSE(RTrim(LTrim(ReviewedOnText)) AS datetime USING 'en-US'), getdate()),
 ModifiedOn = (getdate()), ModifiedBy = (suser_sname())
 -- Check for empty/null/'NULL' text
 WHERE not ReviewedOnText is null 
   AND RTrim(LTrim(ReviewedOnText))<>''
   AND Replace(RTrim(LTrim(ReviewedOnText)),'''','') <> 'NULL';

ModifiedOn和ModifiedBy列仅用于内部数据库跟踪目的。

另请参阅这些Microsoft MSDN参考:

答案 3 :(得分:8)

虽然CONVERT的功能正常,但实际上你不应该使用它。您应该问问自己为什么要在SQL-Server中解析字符串值。如果这是一次性工作,你手动修复一些数据,你将无法再获得该数据,这是可以的,但如果有任何应用程序正在使用它,你应该改变一些东西。最好的方法是使用“日期”数据类型。如果这是用户输入,则更糟。然后你应该先在客户端做一些检查。如果你真的想传递SQL-Server期望日期的字符串值,你总是可以使用ISO格式('YYYYMMDD'),它应该自动转换。

答案 4 :(得分:4)

您可以使用:

SELECT CONVERT(datetime, '24.04.2012', 103) AS Date

参考: CAST and CONVERT (Transact-SQL)

答案 5 :(得分:0)

CONVERT(DateTime, ExpireDate, 121) AS ExpireDate

将做所需的事情,结果:

2012-04-24 00:00:00.000