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

关于日期型的储存和比较

2013-04-20 
关于日期型的存储和比较今天看到一个帖子 http://bbs.csdn.net/topics/390412805我的问题不在怎么优化,还

关于日期型的存储和比较
今天看到一个帖子 http://bbs.csdn.net/topics/390412805
我的问题不在怎么优化,还是在日期的比较,比如说
date betwwen '2012-01-01' and '2012-12-01'
注 这里的 date 为字符型
这样写是否真的会像我们想象的那样,会不会有出错的可能.就像EXCEL一样,有时候对数字的排序并不像我们预期的那样.

[解决办法]
这种方式我用了很久,从来没出错过,唯一可能的是你日期写的不够标准,如2013-3-21和2013-12-21,如果这两个字符比较,反而是后面的小,所以你的日期要符合yyyy-mm-dd的格式,另外用isNull函数比较好

isNull(date,'') betwwen '2012-01-01' and '2012-12-01'
[解决办法]
这样的话格式出错sql会检测不出来。
比大小的话是没有问题的
[解决办法]
如果date是字符型,字符比较按位按ascii码比较,无论两个字符是什么都不会报错
(除非类型不同发生了隐式转换)
[解决办法]
如果你都按120格式存储的.那就没事
[解决办法]

引用:
引用:这样的话格式出错sql会检测不出来。
比大小的话是没有问题的

如果是'2012年01月' 和 '2012年11月' 这样的比较呢
SQL默认是按拼音排序还是按其它的?

字符型的对比你的存储格式的是年月日类型的
全部是2012-01-01 月份和日期都是两位位数
吧-替换成年月日也可以
但是混搭或者其他格式就难了。

[解决办法]
日期列和需要between and的数据类型应该一致,否则可能因为Windows层面的日期格式、SQLServer的语言设置、数据类型的精度原因,导致缺失部分数据。

热点排行