sql - 如何找出哪些数据不会转换?

标签 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

当我运行此命令时,出现错误:

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/

相关文章:

SQL - 将行标记为每组的 0 值

sql-server - 注册新的 SQL 2000 服务器时更改默认端口

sql - Sql Server 2000 中类型的算术溢出错误

sql - SQL IN 对性能有影响吗?

sql-server - 如何在数据查看器中查看所有行?

mysql - 从一张表复制到另一张表

sql - 将所有联系信息放在一张表中与使用键值表

SQL查询-使用级联条件进行过滤

SQL Server - 在联接中正确分组

sql - 将大表导入azure sql数据库