12

我有一列是文本:

Remarks (text, null)

样本值为

"5/21/2013 9:45:48 AM"

如何将其转换为这样的日期时间格式:

"2013-05-21 09:45:48.000"

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

Remarks (text, null) - Date_Sent (datetime, null)

为了清楚起见,这些列表示发送客户询问的日期时间Date_Sent(应该得到(2小时)的值。不幸的是,在我正在处理的数据库中,是文本并且是日期时间。ResponseDate_Sent"2013-05-21 08:00:00.000"Response"5/21/2013 10:00:00 AM"2.00RemarksDate_Sent

4

4 回答 4

15

convert与样式 101 一起使用。

select convert(datetime, Remarks, 101)

如果您的列确实text需要在转换为日期时间之前转换为 varchar

select convert(datetime, convert(varchar(30), Remarks), 101)
于 2013-05-21T06:01:11.560 回答
4

在 SQL Server 中,将文本转换为日期时间

select cast('5/21/2013 9:45:48' as datetime)
于 2013-05-21T04:07:37.603 回答
2

这有效:

SELECT STR_TO_DATE(dateColumn, '%c/%e/%Y %r') FROM tabbleName WHERE 1
于 2016-03-09T08:00:11.030 回答
0

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

添加一个新列:

alter table1
    add column_new datetime

投射原始值:

UPDATE table1
    SET column_new = CAST(column_old AS DATETIME)
于 2021-03-16T12:08:19.780 回答