【发布时间】:2019-09-04 19:38:31
【问题描述】:
表格中的日期格式为 YYYYMMDD,我想将其转换为以下格式,但失败并出现错误:
2019-07-23 00:00:00.000
从字符串转换日期和/或时间时转换失败
这是我正在使用的语句:
convert(varchar(10), convert(datetime, InstallDate0), 23)
【问题讨论】:
-
如果 2012+ 使用 try_convert()。如果转换失败,它将返回一个 NULL 值。
-
您为什么要尝试更改“格式”? SQL Server 中的日期和时间值没有“格式”;它们是二进制值。 SQL Server 中存在日期和时间数据类型是有原因的;存储数据和时间值。不要将日期存储为
varchar,这是错误数据类型。如果您需要“格式”,那就是表示层的职责。如果由于某种未知原因,您无法让表示层完成其工作,请使用(持久的)计算列来提供格式化值;但当然不要将实际值存储为varchar。 -
你也可以试试
where InstallDate0 not like '[12][90][0-9][0-9][0-2][0-9][0-3][0-9]' -
我的问题是我使用的表中的日期是数据类型 nvarchar 并且格式不可用(即 - 20140908 而不是 2014-09-08 00:00:00.000和日期时间格式)
标签: sql sql-server