数据库对日期进行比较
Posted jap6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库对日期进行比较相关的知识,希望对你有一定的参考价值。
2018年07月20日 10:46:44 飞雪冬玉花 阅读数:1519
数据库对日期进行比较
原则是先把两个日期的格式统一一下,然后把日期字符串转化为日期,最后进行比较
转化为日期的两个时间可以做加减运算得出的结果为天数.
结果*24则得出的是小时数
结果*24*60得出的是分钟数
结果*24*60*60得出的是秒数
ceil((To_date(to_char(sysdate, ‘yyyy-MM-dd HH24:mi:ss‘),‘yyyy-mm-dd hh24-mi-ss‘) -
To_date(GXSJ, ‘yyyy-mm-dd hh24-mi-ss‘)) * 24 * 60) > 10
计算两个日期相差的分钟数
ceil和floor函数在一些业务数据的时候,有时还是很有用的。
ceil(n) 取大于等于数值n的最小整数;
floor(n)取小于等于数值n的最大整数
select * from up_date where update < to_date(‘2007-09-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘) select * from up_date where update <= to_date(‘2007-09-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘)
在今天只后:
select * from up_date where update > to_date(‘2007-09-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘) select * from up_date where update >= to_date(‘2007-09-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘)
精确时间:
select * from up_date where update = to_date(‘2007-09-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘)
在某段时间内:
select * from up_date where update between to_date(‘2007-07-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘) and to_date(‘2007-09-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘) select * from up_date where update < to_date(‘2007-09-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘) and update > to_date(‘2007-07-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘) select * from up_date where update <= to_date(‘2007-09-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘) and update >= to_date(‘2007-07-07 00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘)
mysql中日期的比较
select * from student where ‘2012-02-27 00:00:00‘ < created_date and ‘2012-02-29 00:00:00‘ > created_date
select * from student where UNIX_TIMESTAMP(‘2012-02-27 00:00:00‘) < UNIX_TIMESTAMP(created_date) and UNIX_TIMESTAMP(‘2012-02-29 00:00:00‘) > UNIX_TIMESTAMP(created_date);
SELECT * FROM student WHERE (UNIX_TIMESTAMP(created_date) - UNIX_TIMESTAMP(‘2012-02-26 00:00:00‘) ) >= 0 AND (UNIX_TIMESTAMP(created_date) - UNIX_TIMESTAMP(‘2012-02-29 00:00:00‘) ) <= 0
MySql中时间比较的实现
unix_timestamp 函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970-01-01 00:00:00到指定时间所经历的秒数。
有了这个函数,就可以很自然地把时间比较转换为一个无符号整数的比较。
例如,判断一个时间是否在一个区间内
unix_timestamp( time ) between unix_timestamp( ‘start ‘) and unix_timestamp( ‘end‘ )
mysql中多条件判断:
要求日期在2017-12-28,且city这一列的值为Beijing,SQL语句如下:
SELECT * FROM
table_name where UNIX_TIMESTAMP(flightDate)=UNIX_TIMESTAMP(‘2017-12-28‘) and
city=‘Beijing‘;
这篇文章主要介绍了Mysql中日期比较大小的方法,需要的朋友可以参考下
假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql:
代码如下
1 |
select * from product where add_time = ‘2013-01-12‘ |
对于这种语句,如果你存储的格式是YY-mm-dd是这样的,那么OK,如果你存储的格式是:2013-01-12 23:23:56这种格式你就悲剧了,这是你就可以使用DATE()函数用来返回日期的部分,所以这条sql应该如下处理:
代码如下
1 |
select * from product where Date(add_time) = ‘2013-01-12‘ |
再来一个,如果你要查询2013年1月份加入的产品呢?
代码如下
1 |
select * from product where date(add_time) between ‘2013-01-01‘ and ‘2013-01-31‘ |
你还可以这样写:
1 |
select * from product where Year(add_time) = 2013 and Month(add_time) = 1 |
这些你该知道mysql日期函数在对你处理日期比较问题的作用了吧?
其date_col的值是在最后30天以内:
代码如下
1 2 3 |
mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) |
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。
代码如下
1 2 3 |
mysql> select DAYOFWEEK(‘1998-02-03‘); -> 3 WEEKDAY(date) |
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
代码如下
1 2 3 4 5 |
mysql> select WEEKDAY(‘1997-10-04 22:23:00‘); -> 5 mysql> select WEEKDAY(‘1997-11-05‘); -> 2 DAYOFMONTH(date) |
返回date的月份中日期,在1到31范围内。
代码如下
1 2 3 |
mysql> select DAYOFMONTH(‘1998-02-03‘); -> 3 DAYOFYEAR(date) |
返回date在一年中的日数, 在1到366范围内。
代码如下
1 2 3 |
mysql> select DAYOFYEAR(‘1998-02-03‘); -> 34 MONTH(date) |
返回date的月份,范围1到12。
代码如下
1 2 3 |
mysql> select MONTH(‘1998-02-03‘); -> 2 DAYNAME(date) |
返回date的星期名字。
代码如下
1 2 3 |
mysql> select DAYNAME("1998-02-05"); -> ‘Thursday‘ MONTHNAME(date) |
返回date的月份名字。
代码如下
1 2 3 |
mysql> select MONTHNAME("1998-02-05"); -> ‘February‘ QUARTER(date) |
返回date一年中的季度,范围1到4。
代码如下
1 2 |
mysql> select QUARTER(‘98-04-01‘); -> 2 |
总结
以上所述是小编给大家介绍的Mysql中日期比较大小的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
以上是关于数据库对日期进行比较的主要内容,如果未能解决你的问题,请参考以下文章