SQL 字符串类型的时间怎么比较大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 字符串类型的时间怎么比较大小相关的知识,希望对你有一定的参考价值。

我有个字段是varchar(10)类型的,里面的数据都是小时,比如12:10,13:50这样的,我应该怎么比较比当前时间(只是时间,没有日期)晚两个小时的数据呢

参考技术A SELECT DATEADD(HOUR,2,CAST(@字段 AS TIME)) 晚两个小时的时间本回答被提问者采纳 参考技术B select cast('13:50' as time)
转成时间再比较

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

日期数据在Sql Server数据库中不都是以日期类型保存的,如果数据库中保存日期字段的数据类型为varchar,而你又需要对这个日期和另外一个日期进行比较,那么该怎么办呢?总结有以下方法

(1)方法一

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

(2)方法二

利用Sql提供的日期转换函数:CONVERT (<data_ type>[ length ], <expression> [, 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())) 。

以上是关于SQL 字符串类型的时间怎么比较大小的主要内容,如果未能解决你的问题,请参考以下文章

SQL里面,用字符类型存储时间,可以比较时间大小吗?

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

SQL 比较时间大小

sql日期比较大小

sql存储过程中时分秒字符串怎么比较大小 如08:30:00 与13:00:00怎么比较

Sql字符串与时间比较问题