如何比较两个datetime类型数字的大小

如何比较两个datetime类型数字的大小,第1张

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

第一种方法:

很容易想到,就是纯粹地利用字符串来比较大小,比如有一个字段为vote_time,其数据类型为varchar,要比较这个日期是不是大于某个日期,比如"2006-02-23",那么可以直接写:

where vote_time>'2006-02-23',这中方法很直观,当然也需要在格式上有所规范,比如,如果日期是2006年3月3日,就必须将日期保存为2006-03-03,否则比较的时候容易出错。

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

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

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

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

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

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

转换前

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

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

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

本文来自CSDN博客,转载请标明出处:>

你是想 select 出来这一列数据是 datetime 格式还是要这个表结构的这列修改为 datetime 类型?

如果只是想 select 这列数据是 datetime 可以使用 convert 函数 将其转换成 datetime 类型,下面代码是一个示例可以参考一下:

declare @str varchar(50);

set @str = '20180406'

select convert(datetime, @str, 112)

以上就是关于如何比较两个datetime类型数字的大小全部的内容,包括:如何比较两个datetime类型数字的大小、SQL server 2012中如何将varchar(50)类型转换为datetime类型、SQL server中,varchar转换为datetime类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10150763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存