【发布时间】:2020-01-12 15:18:25
【问题描述】:
这已经被问过很多次了,我在发布这个问题之前尝试了很多次。我的 SQL Server 表上有 2 列,其中日期存储为 CHAR(8) yyyymmdd 格式。当我尝试将此插入到另一个带有日期列的表中时,我得到:
从字符串转换日期和/或时间时转换失败。
我使用的类型转换是:
,CAST(convert(char(10),qrda.BillFromDate,120) AS DATE) AS [BillStartDate]
,CAST(convert(char(10),qrda.BillToDate,120) AS DATE) AS [BillEndDate]
使用上面的代码,我试图使其 SQL Server 可读的日期格式,然后将其类型转换为 DATE,以便我可以将其插入目标表而无需任何其他转换。不知道我哪里出了问题。
【问题讨论】:
-
为什么不只是directly cast it:
CAST(qrda.BillFromDate AS DATE) -
你给它的样式是 120——看起来像这样“yyyy-mm-dd hh:mi:ss (24h)”——不是你的数据的样子。
-
该数据是样式 112,也应该使用隐式转换。见docs.microsoft.com/en-us/sql/t-sql/functions/…
-
只是把这个留在这里...sqlblog.org/2009/10/12/…
标签: sql sql-server tsql datetime type-conversion