sql server中字符串类型的日期如何比较大小 |
您所在的位置:网站首页 › sql字符串格式 › sql server中字符串类型的日期如何比较大小 |
背景
最近在维护NCRE教师端,发现一个问题:数据库中的日期是字符串格式的,可是为什么字符串类型的数据也可以比较大小呢?以下是两种比较方式: 一、用字符串比较这个方法很容易想到,就是纯粹地利用字符串来比较大小,比如有一个字段为adddate,其数据类型为varchar,要比较这个日期是不是大于某个日期,比如”2016-2-22”,那么可以直接写:where adddate>’2016-02-22’,这种方法很直观,当然也需要在格式上有所规范,比如,如果日期是2016年2月22日,就必须将日期保存为2016-02-22,否则比较的时候容易出错。 再举一个更直观的例子:从一个表中查询一个范围内的CollegeID,CollegeID从01–14,执行如下sql语句,结果如下: SELECT * FROM StudentBindPaperTypeEntity WHERE CollegeID BETWEEN '10' AND '7'
利用Sql提供的日期转换函数:CONVERT ([ length ], [, style]) 1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。 2)length用于指定数据的长度,缺省值为30。 3)用CONVERT() 函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。如果用这种方法来判断某一个字段的话,则存入的日期字段的字符串格式只要是能让sql server完成对日期的转换就可以了,而不一定要像第一种方法中的那样严格。还是说adddate字段,比如要比较它是否大于当前的日期,就可以这样写:where (CONVERT(varchar, adddate) >= CONVERT(varchar, GETDATE())) 。 总结以前从来没有思考过这个问题,这是一个学姐提出来的,可是很多东西不怕不知道就怕不知道。 第一点:看到两个日期进行比较的时候,我从来没有更深入的思考过,觉得这样比较就是理所当然呀,没有什么问题。 第二点:从来没有遇到过类似的问题,为什么学姐就可以思考这个问题呢?学姐思考的多是一方面,另一方面就是可能学姐之前遇到过类似的东西 ,所以扩展自己的接触面也是非常重要的一点。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |