【发布时间】:2014-10-02 17:38:15
【问题描述】:
我有 TRANSACTIONS 表和 col BUSINESS_DATE (varchar 255)。
distinct LEN(BUSINESS_DATE) = 6 and 8
--Sample data for BUSINESS_DATE
071312 --mmddyy for LEN = 6
08012012 --mmddyyyy for LEN = 8
我想在 TABLE SUNNY 中加载这些日期作为 DATE。这是我的 CASE 声明 -
select CASE WHEN LEN(BUSINESS_DATE) = 6
THEN CAST('20' + RIGHT(GRAND.[BUSINESS_DATE],2) + LEFT(GRAND.[BUSINESS_DATE],4) AS DATE)
WHEN LEN(BUSINESS_DATE) = 8
THEN CAST(RIGHT(GRAND.[BUSINESS_DATE],4) + LEFT(GRAND.[BUSINESS_DATE],4) AS DATE)
END AS TRANS_DT
into SUNNY
from TRANSACTIONS GRAND
所有记录都已加载。现在,当我尝试执行以下查询来测试日期格式时,它会抛出错误消息 8116。任何人都可以解释这里出了什么问题,如何我可以测试它吗?
select top 5 * from
SUNNY
where ISDATE(TRANS_DT) = 1
【问题讨论】:
-
如果
SUNNY.TRANS_DT列是日期类型(我认为您的问题是这样),则所有记录均已加载且没有转换错误的事实证明您的日期是有效的。
标签: sql sql-server sql-server-2008 date