关于日期型的存储和比较

yiyishuitian 2013-04-07 10:01:27
今天看到一个帖子 http://bbs.csdn.net/topics/390412805
我的问题不在怎么优化,还是在日期的比较,比如说
date betwwen '2012-01-01' and '2012-12-01'
注 这里的 date 为字符型
这样写是否真的会像我们想象的那样,会不会有出错的可能.就像EXCEL一样,有时候对数字的排序并不像我们预期的那样.
...全文
211 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyishuitian 2013-04-08
  • 打赏
  • 举报
回复
昨天试了好多次,如果日期的数据部分 完全按照 2012-01-20这样的方式来写的话,是没有问题的. 但是按照2012-1-20 这样来写的话,会有问题. 所以我感觉像这种日期类的比较的话,还是转换为日期类型比较好.
yiyishuitian 2013-04-07
  • 打赏
  • 举报
回复
引用 2 楼 Beirut 的回复:
这样的话格式出错sql会检测不出来。 比大小的话是没有问题的
如果是'2012年01月' 和 '2012年11月' 这样的比较呢 SQL默认是按拼音排序还是按其它的?
SQL77 2013-04-07
  • 打赏
  • 举报
回复
如果你都按120格式存储的.那就没事
szm341 2013-04-07
  • 打赏
  • 举报
回复
如果date是字符型,字符比较按位按ascii码比较,无论两个字符是什么都不会报错 (除非类型不同发生了隐式转换)
黄_瓜 2013-04-07
  • 打赏
  • 举报
回复
这样的话格式出错sql会检测不出来。 比大小的话是没有问题的
sundayzhao 2013-04-07
  • 打赏
  • 举报
回复
这种方式我用了很久,从来没出错过,唯一可能的是你日期写的不够标准,如2013-3-21和2013-12-21,如果这两个字符比较,反而是后面的小,所以你的日期要符合yyyy-mm-dd的格式,另外用isNull函数比较好 isNull(date,'') betwwen '2012-01-01' and '2012-12-01'
發糞塗牆 2013-04-07
  • 打赏
  • 举报
回复
日期列和需要between and的数据类型应该一致,否则可能因为Windows层面的日期格式、SQLServer的语言设置、数据类型的精度原因,导致缺失部分数据。
黄_瓜 2013-04-07
  • 打赏
  • 举报
回复
引用 5 楼 yiyishuitian 的回复:
引用 2 楼 Beirut 的回复:这样的话格式出错sql会检测不出来。 比大小的话是没有问题的 如果是'2012年01月' 和 '2012年11月' 这样的比较呢 SQL默认是按拼音排序还是按其它的?
字符型的对比你的存储格式的是年月日类型的 全部是2012-01-01 月份和日期都是两位位数 吧-替换成年月日也可以 但是混搭或者其他格式就难了。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧