首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

急SQL 日期查询的有关问题

2013-06-25 
急,SQL 日期查询的问题数据库是SQL SERVER从身份证号中提取出生日期,然后再根据要求时间做筛选。但不知道为

急,SQL 日期查询的问题
数据库是SQL SERVER
从身份证号中提取出生日期,然后再根据要求时间做筛选。但不知道为什么,一直报错:从 nvarchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值

select *  from (
SELECT   CONVERT(datetime, SUBSTRING(shengfenNum, 7, 4) + '/' + SUBSTRING(shengfenNum, 11, 2) + '/' + SUBSTRING(shengfenNum, 13, 2),111) AS '出生日期'
 FROM Relation
     where 
ISDATE( SUBSTRING(shengfenNum, 7, 4) + '/' + SUBSTRING(shengfenNum, 11, 2) + '/' + SUBSTRING(shengfenNum, 13, 2))>0
) as tab1
where 出生日期 < '2011-1-1 '


把条件语句去掉 就能运行
[解决办法]
SELECT distinct  is_date(CONVERT(datetime, SUBSTRING(shengfenNum, 7, 4) + '/' + SUBSTRING(shengfenNum, 11, 2) + '/' + SUBSTRING(shengfenNum, 13, 2),111)) 
FROM Relation

看看这个有没有不是日期类型的数据?比如有字符串存在
[解决办法]
try this,

SELECT CONVERT(datetime, SUBSTRING(shengfenNum, 7, 4) + '/' + SUBSTRING(shengfenNum, 11, 2) + '/' + SUBSTRING(shengfenNum, 13, 2),111) AS '出生日期'
into #tab1
from Relation
where 
ISDATE(SUBSTRING(shengfenNum,7,4)+'/'+SUBSTRING(shengfenNum,11,2)+'/'+SUBSTRING(shengfenNum,13,2))>0


select * from #tab1
where 出生日期 < '2011-1-1 '

热点排行