sco*_*ttm 2 sql t-sql sql-server-2000
我有一个SQL表,其日期字段定义为char(8)或20090609,时间字段定义为char(4)或1230.我将此数据移动到另一个表中,我想将两个字段组合在一起将它们放在新表中的smalldatetime字段中.我的查询是这样的:
INSERT NewTable(eventdate)
SELECT
CAST((datecol + ' ' + substring(timecol, 1, 2) + ':' + substring(timecol, 3, 2)) as smalldatetime)
FROM OldTable
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到一个错误:
将char数据类型转换为smalldatetime数据类型会导致超出范围的smalldatetime值.
我已经尝试检查len(datecol)和len(timecol)以确保它们至少是正确的字符数.我不知道如何找到有问题的数据,有什么建议吗?数据库是SQL2000,我正在使用SMO 2008.
试试这个:
SELECT datecol, timecol
FROM OldTable
WHERE ISDATE(datecol + ' ' + substring(timecol, 1, 2) + ':' + substring(timecol, 2, 2)) = 0
Run Code Online (Sandbox Code Playgroud)
这将显示无法成功转换哪些行.