如何在SQL中将文本列转换为datetime

Poc*_*och 11 sql-server datetime text sql-server-2008

我有一个文本列:

备注(text,null)

示例值为"5/21/2013 9:45:48 AM"

如何将其转换为这样的日期时间格式:"2013-05-21 09:45:48.000"

转换的原因是我试图获取日期时间列和备注列中日期戳之间的总小时数.我在考虑这样的事情:

备注(text,null) - Date_Sent(datetime,null)

需要说明的是,列表示客户发出的查询发送的日期时间(Date_Sent)以及代表对查询(响应)的最后响应,因此对于具有值"2013-05-"的Date_Sent样本21 08:00:00.000"和一个值为"5/21/2013 10:00:00 AM"的响应",我应该得到2.00(2小时)的值.不幸的是,在我正在处理的数据库中,备注是一个文本,Date_Sent是一个日期时间.

我对SQL很新,所以我真的需要帮助:( TIA!

Mik*_*son 13

使用带有样式101的转换.

select convert(datetime, Remarks, 101)
Run Code Online (Sandbox Code Playgroud)

如果您的列确实text需要在转换为datetime之前转换为varchar

select convert(datetime, convert(varchar(30), Remarks), 101)
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案。在解析输入日期(如“1/4/2013”​​)时,它将避免歧义。101 样式是`mm/dd/yyyy`,所以它总是被解析为 Jan 4th 而永远不会被解析为 Apr 1st。 (2认同)

Mud*_*san 5

在SQL Server中,将文本转换为datetime

select cast('5/21/2013 9:45:48' as datetime)
Run Code Online (Sandbox Code Playgroud)