如何在T-SQL中将字符串转换为日期?
我的测试用例是字符串: '24.04.2012'
Answers:
CONVERT(datetime, '24.04.2012', 104)
应该做到的。有关更多信息,请参见此处:CAST和CONVERT(Transact-SQL)
CONVERT(DateTime, DateField, 104)
假设数据库为MS SQL Server 2012或更高版本,则此方法有效。基本语句包含内联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参考:
尽管“转换”功能有效,但您实际上不应该使用它。您应该问自己为什么在SQL Server中解析字符串值。如果这是一项一次性的工作,而您要手动修复一些数据,那么您下次再也不会获得该数据,那么可以,但是如果任何应用程序正在使用它,则应该进行一些更改。最好的方法是使用“日期”数据类型。如果这是用户输入,那就更糟了。然后,您应该首先在客户端中进行一些检查。如果您确实希望在SQL-Server期望日期的地方传递字符串值,则可以始终使用ISO格式('YYYYMMDD'),并且它应该自动转换。