加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver2000中字符串类型的日期如何比较大小

发布时间:2020-12-12 15:42:25 所属栏目:MsSql教程 来源:网络整理
导读:如果在数据库( sql )中将保存日期的字段的数据类型设置为 varchar ,而你又需要对这个日期和另外一个日期进行比较,那么该怎么办呢? 第一种方法 : 很容易想到,就是纯粹地利用字符串来比较大小,比如有一个字段为 vote_time, 其数据类型为 varchar ,要

注:插入的varchar时间值必需是合法的(如2009-2-30就是不合法的日期,2月没有30号)否则,转换时会有错误: char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。输入日期的时候,可以选择使用日期控件,这样就不会输入不存在的日期了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

如果在数据库(sql)中将保存日期的字段的数据类型设置为varchar,而你又需要对这个日期和另外一个日期进行比较,那么该怎么办呢?
第一种方法

很容易想到,就是纯粹地利用字符串来比较大小,比如有一个字段为vote_time,其数据类型为varchar,要比较这个日期是不是大于某个日期,比如"2006-02-23",那么可以直接写:
where vote_time>'2006-02-23'
,这中方法很直观,当然也需要在格式上有所规范,比如,如果日期是200633日,就必须将日期保存为2006-03-03,否则比较的时候容易出错。

第二种方法:使用类型转换函数convert()

1首先说明不需要类型转换,并可以正确比较的情况

如果只是比较varchar类型的时间值与日期类型的值比较

??

?

?

select * from voter where vote_time>getdate()会自动转换varchardatetime类型(2009-2-27转换为2009-02-27),并进行比较,所以2009-1-15并为出现在结果集中

第一种情况下,之所以没有正确是因为系统认定'2006-02-23'为字符串,所以进行的比较是按照比较两个字符串的大小进行的,依次按位比较

?

2、如果是varchar类型的时间值,按照时间先后排序,则需要转换varchardatetime后再排序

转换前

?

?

转换格式前排序时,时间2007-02-28 06:30:000实际比2007-2-27 06:30:000迟,但是却排在了前面。转换后

?

?

?

结果已经是按照实际时间的先后顺序从早到晚排序了

    推荐文章
      热点阅读