我有一个以下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
答案 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