MySql中時間比較的實現
unix_timestamp()
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' ) |
這里是一個使用日期函數的例子。
下面的查詢選擇了所有記錄,其date_col的值是在最后30天以內:
| mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; |
DAYOFWEEK(date)
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。這些索引值對應于ODBC標準。
| mysql> select DAYOFWEEK('1998-02-03');-> 3 |
WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
| mysql> select WEEKDAY('1997-10-04 22:23:00');-> 5mysql> select WEEKDAY('1997-11-05');-> 2 |
DAYOFMONTH(date)
返回date的月份中日期,在1到31范圍內。
| mysql> select DAYOFMONTH('1998-02-03');-> 3 |
DAYOFYEAR(date)
返回date在一年中的日數, 在1到366范圍內。
| mysql> select DAYOFYEAR('1998-02-03');-> 34 |
MONTH(date)
返回date的月份,范圍1到12。
| mysql> select MONTH('1998-02-03');-> 2 |
DAYNAME(date)
返回date的星期名字。
| mysql> select DAYNAME("1998-02-05");-> 'Thursday' |
MONTHNAME(date)
返回date的月份名字。
| mysql> select MONTHNAME("1998-02-05");-> 'February' |
QUARTER(date)
返回date一年中的季度,范圍1到4。
| mysql> select QUARTER('98-04-01');-> 2 |
WEEK(date)
WEEK(date,first)
對于星期天是一周的第一天的地方,有一個單個參數,返回date的周數,范圍在0到52。2個參數形式WEEK()允許你指定星期是否開始于星期天或星期一。如果第二個參數是0,星期從星期天開始,如果第二個參數是1,從星期一開始。
| mysql> select WEEK('1998-02-20');-> 7mysql> select WEEK('1998-02-20',0);-> 7mysql> select WEEK('1998-02-20',1);-> 8 |
YEAR(date)
返回date的年份,范圍在1000到9999。
| mysql> select YEAR('98-02-03');-> 1998 |