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

时间:2013-05-21 03:40:06

标签: sql-server sql-server-2008 datetime text

我有一个专栏文章:

备注(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”​​的Date_Sent的样本-05-21 08:00:00.000“和响应值为”5/21/2013 10:00:00 AM“,我的值应为2.00(2小时)。不幸的是,在我正在处理的数据库中,备注是一个文本,Date_Sent是一个日期时间。

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

4 个答案:

答案 0 :(得分:13)

convert与样式101一起使用。

select convert(datetime, Remarks, 101)

如果您的列真的是text,则需要在转换为datetime之前转换为varchar

select convert(datetime, convert(varchar(30), Remarks), 101)

答案 1 :(得分:5)

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

select cast('5/21/2013 9:45:48' as datetime)

答案 2 :(得分:0)

这有效:

SELECT STR_TO_DATE(dateColumn, '%c/%e/%Y %r') FROM tabbleName WHERE 1

答案 3 :(得分:0)

要转换日期存储为 varchar 的现有列,请执行以下操作:

添加新列:

alter table1
    add column_new datetime

投射原始值:

UPDATE table1
    SET column_new = CAST(column_old AS DATETIME)