我有一个 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
当我运行此命令时,出现错误:
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.
我尝试检查 len(datecol) 和 len(timecol) 以确保它们至少是正确的字符数。我不知道如何找到有问题的数据,有什么建议吗?数据库是SQL2000,我使用的是SMO 2008。
最佳答案
试试这个:
SELECT datecol, timecol
FROM OldTable
WHERE ISDATE(datecol + ' ' + substring(timecol, 1, 2) + ':' + substring(timecol, 2, 2)) = 0
这将显示哪些行无法成功转换。
关于sql - 如何找出哪些数据不会转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/970550/