将日期中的时间转换为00:00:00

时间:2020-06-27 18:12:40

标签: sql sql-server

我有一个以下varchar格式的日期列。如何将其转换为日期时间格式并将时间替换为00:00:00?

Dateformats (varchar)
2011-08-01 00:00:00
2000-11-16 07:39:44
2020-06-06 07:51:42.644
2020-05-26 06:55:38.08

预期结果

Dateformats (datetime)
2011-08-01 00:00:00.000
2000-11-16 00:00:00.000
2020-06-06 00:00:00.000
2020-05-26 00:00:00.000

2 个答案:

答案 0 :(得分:0)

只需强制转换为date

cast(left(datecol, 10) as date)

您实际上不需要left(),因此可以正常工作:

cast(datecol as date)

但是我喜欢left()明确说明转换。

如果您确实需要时间部分,请回退:

cast(cast(left(datecol, 10) as date) as datetime)

或者,如果您希望该值作为字符串:

concat(left(datecol, 10), ' 00:00:00.000')

注意:您不应将日期/时间值存储为字符串。您应该使用内置类型。

答案 1 :(得分:0)

我建议从Datetime转换为Date,然后再次转换为Datetime / Datetime2:

SELECT CAST(CAST(MyDateTime AS date) as datetime) My_New_DateTime_Without_Time