如何将string转换为dateT-SQL?

如何在T-SQL中将string转换为date?

我的testing用例是string: '24.04.2012'

 CONVERT(datetime, '24.04.2012', 104) 

应该做的伎俩。 请参阅这里以获取更多信息: “CAST和CONVERT(Transact-SQL)”

Microsoft SQLdate格式

 CONVERT(DateTime, DateField, 104) 

这是一个很好的解决scheme。 基本语句包含在线尝试parsing:

 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参考:

  • CAST和CONVERT(Transact-SQL)
  • PARSE(Transact-SQL)

尽pipeCONVERT的工作,你实际上不应该使用它。 你应该问自己为什么要在SQL-Server中分析string值。 如果这是一次性手动修复某些数据的工作,那么您将不能再次获取这些数据,这是可以的,但是如果有任何应用程序正在使用这些数据,则应该更改某些内容。 最好的办法是使用“date”数据types。 如果这是用户input,则更糟糕。 那么你应该先在客户端做一些检查。 如果你真的想在SQL-Server期望的date传递string值,你总是可以使用ISO格式('YYYYMMDD'),它应该自动转换。

您可以使用:

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

参考: CAST和CONVERT(Transact-SQL)

 CONVERT(DateTime, ExpireDate, 121) AS ExpireDate 

会做什么需要,结果是:

 2012-04-24 00:00:00.000