【发布时间】:2017-06-01 02:09:04
【问题描述】:
在 SQL Azure 服务器数据库中,表有一个 nvarchar 列,其中包含字符串格式 (dd/MM/yyyy) 的日期值。例如03/11/2011
列 ARTICLE1 包含一些记录的空值。
以下是我目前尝试过的查询,但出现错误
将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。
SQL 查询
select
[Code], concat(fname,' ',lname) as Name, [ARTICLE1]
from
#T2
where
CAST(ISNULL( [ARTICLE1], '1900-01-01') AS DATETIME) >= CONVERT(DATETIME, '31/01/1920', 103)
and CAST(ISNULL( [ARTICLE1] , '1900-01-01') AS DATETIME) <= CONVERT(DATETIME, '31/01/2017', 103)
and Category in ('STAFF', 'MANAGER')
【问题讨论】:
-
你能检查一下ARTICLE1栏的日期时间格式吗?是 yyyy-dd-MM 还是 yyyy-MM-dd?
-
@DMayuri 我发现错误应该是转换而不是强制转换..它是 dd/mm/yyyy 格式
-
为什么不在日期列中存储日期?它只会让你承受无限的痛苦。
-
@JonathanLeffler 由于表结构,我不能使用日期列,表结构是字段名,字段值(可以是任何字符串、整数或日期)
-
运气不好。可怕的桌子设计。欢迎来到痛苦的世界!
标签: sql sql-server datetime