【发布时间】:2012-02-29 19:32:25
【问题描述】:
我所有的列都是varchar,所以我使用通用表达式表将[Column 0]转换为datetime,因为[Column 0]包含2012-02-28 00:00:08.000这种格式的日期
WITH pss AS
(
select CONVERT(datetime, [Column 0]) as t, [Column 1], [Column 2], [Column 3], [Column 4], [Column 5], [Column 6]
from PWS where [Column 0] like '%2/28%'
)
select *from pss where datepart(HOUR,[t]) >= '11' AND datepart(HOUR,[t]) <= '12'
我收到以下消息
消息 242,第 16 级,状态 3,第 1 行
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
【问题讨论】:
-
您可以使用
ISDATE()函数检查哪些值没有正确转换。 -
yes ISDATE() 返回所有行,1 表示所有行都是有效的日期时间
-
@AI25 - 如果删除 where 子句,ISDATE() 是否也只返回 1?
-
@lieven 是的,他们都返回 1
-
你能发布一个显示问题的最小数据集吗?
标签: sql sql-server-2008 tsql