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

问一个关于isdate的有关问题

2012-09-24 
问一个关于isdate的问题用isdate判断输入的char函数的数字是否为日期时,如果把XXXX年YY月DD日写成这样的数

问一个关于isdate的问题
用isdate判断输入的char函数的数字是否为日期时,如果把XXXX年YY月DD日写成这样的数字‘XXXXYYDD,
现在问题是为什么1753年1月1日以后的就会判断成是日期,但是1753年1月1日之前的就判断不是日期,这个如果要把1753年1月1日之前的就判断成是日期,要怎么弄啊?
代码如下:
select isdate('17521231'),isdate('17530101')

显示结果是:

01
为什么?有人知道原因么?

[解决办法]
1753 的原因是这个http://blog.csdn.net/orchidcat/article/details/5694139
[解决办法]
由于历法原因,datetime类型默认从1753年1月1日开始算。如果要使用之前的日期,要转换成datetime2/date等等。可以看联机丛书:ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_6tsql/html/83e378a2-6e89-4c80-bc4f-644958d9e0a9.htm
而isdate实际上是处理字符串而不是日期,无论把日期改成什么格式,默认都为datetime,所以isdate()这个函数目前为止无法判断1753年1月1日之前的日期。
建议把这部分的判断放到前端应用程序或者使用一些where 条件来判断。或者,使用一些判断日期格式的自定义函数来实现。

热点排行