我有一个varchar类型的record_created列,其中包含以两种不同方式格式化的多个值。
如何将该列转换为DATETIME以与GETDATE进行比较?
答案 0 :(得分:0)
如果您使用的是SQL Server,则可以在此处使用CONVERT
函数:
SELECT
CONVERT(datetime, LEFT('2017-04-17 16:55:53.3840460', 23), 121) AS date1,
CONVERT(datetime, 'Sep 18 2015 11:25PM', 100) AS date2;
您的第一种时间戳似乎适用于掩码121,而第二种时间戳适用于掩码100。下面的演示链接显示了转换的有效性。
答案 1 :(得分:0)
GETDATE()
是特定于SQL Server
的,则可以使用try_convert():
select cast(try_convert(datetime2, col) as datetime)
from table t
where try_convert(datetime2, col) is not null;
但是,如果字符串日期与您提供的格式完全相同,则只需进行转换即可:
select cast(cast(col as datetime2) as datetime)
from table t;