數據庫對日期進行比較
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中日期比較大小的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
數據庫對日期進行比較