1. 程式人生 > >mysql中時間查詢函式(包括時間戳)

mysql中時間查詢函式(包括時間戳)

這些函式都是MySQL自帶的,可以直接使用在PHP寫的MySQL查詢語句中哦

1-CURDATE()或CURRENT_DATE()和CURTIME()或CURRENT_TIME()
這兩個函式是比較常用到的,顧名思義,第一個返回當前日期,第二個返回當前時間
可以在MySQL客戶端或者PHP語句裡寫"SELECT CURDATE(),CURTIME()"檢視相關資訊.
還有一個很重要的函式NOW(),返回當前日期和時間其實就是上面兩個函式返回結果的合併。

2-DATE_ADD和DATE_SUB(date,INTERVAL int keyword)
這兩個函式很重要,返回日期date加上或減去格式化的時間INTERVAL int,像今天有個朋友提到如何查詢一週之內的資料就要用到這個函式。
下面講一下INTERVAL int keyword
先舉個例子

PHP 程式碼: SELECT  FROM tblname WHERE TIME > DATE_SUB ( NOW (), INTERVAL 1 MONTH

這個語句執行後返回表中所有TIME欄位值從當前日期起一個月之內的資料

PHP 程式碼: SELECT  FROM tblname WHERE TIME > DATE_SUB ( NOW (), INTERVAL  "1-1"  YEAR_MONTH

這個語句返回距今一年零一個月之內的資料
如果用到DAY_SECOND引數,前面的int就必須如 "1 12:23:34"這樣的格式
下面是keyword引數列表

PHP 程式碼: MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK 
MONTH 
QUARTER 
YEAR 
SECOND_MICROSECOND 
MINUTE_MICROSECOND 
MINUTE_SECOND     
HOUR_MICROSECOND     
HOUR_SECOND     
HOUR_MINUTE 
DAY_MICROSECOND     
DAY_SECOND     
DAY_MINUTE     
DAY_HOUR 
YEAR_MONTH 

其中QUARTER和WEEK是MySQL5之後才有的。
EXTRACT(keyword FROM date)-這個函式從提供的日期中摘取出相關資訊

PHP 程式碼: SELECT EXTRACT ( DAY FROM NOW ()) 

就返回當前日期的DAY,今天是16日就返回數字16。

下面介紹幾個日期時間函式
DAYOFWEEK(NOW())返回當前日期是這周的第一天,週日是第一天,
DAYNAME(NOW())返回星期的名字
DAYOFMONTH(NOW()) 返回今天是幾號
DAYOFYEAR(NOW()) 返回今天是今年的第多少天
YEAR(NOW()) WEEK(NOW()) MONTH(NOW()) HOUR(NOW()) MINUTE(NOW()) QUARTER(NOW()) SECOND(NOW())
上面都不用說了,分別返回年,周,月,小時,分鐘,秒
為什麼沒有日期呢?因為DAYOFMONTH(NOW())就是啊!
那麼對於時間戳怎麼處理呢?有兩個函式
 UNIX_TIMESTAMP(NOW())返回當前時間的UNIX時間戳
FROM_UNIXTIME(int) 根據UNIX時間戳返回預設格式的時間日期
TIME_TO_SEC和SEC_TO_TIME分別在數字秒數和時間秒數之間轉化
比如TIME_TO_SEC("1:00:00");返回一小時的秒數
還有兩個不太用到的函式
TO_DAYS(date) 返回從0年到date的總天數
FROM_DAYS(x) 進行相反的操作

還有2個函式
PERIOD_ADD(date,month)這個函式需要的DATE格式是這樣的200610,
PERIOD_ADD(200610,-2)返回200608
而另一個函式
PERIOD_DIFF(200608,200610)返回也是-2

下面是時間日期函式最後的一個重點:格式化
學過C語言的人都知道printf裡面的引數%s,%d等等吧。

PHP 程式碼: % -   縮寫的星期名
% -   縮寫的月份名
% 月份中的天數
% 小時 [ 帶前導零 ]
%
-   分鐘 [ 帶前導零 ]
%
一年中的天數
% 月份 [ 帶前導零 ]
%
月份 [ 完整 ]
%
- [ AM或PM ]
%
時間 [ 12小時格式 ]
%
[ 帶前導零 ]
%
時間 [ 24小時格式 ]
%
一週中的天數 [ 0 - 6 ]- 這裡想不通為什麼DAYOFWEEK返回的是1 - 7
% 星期名 [ 完整 ]
%
年份 [ 4位數

上面的給個例子

PHP 程式碼: SELECT DATE_FORMAT ( NOW (), "%Y-%m-%d" )
上面這句話返回2006 - 10 - 16 

還有FROM_UNIXTIME()函式的用法:

mysql> SELECT FROM_UNIXTIME(875996580);

        -> '1997-10-04 22:23:00'

mysql> SELECT FROM_UNIXTIME(875996580) + 0;

        -> 19971004222300

mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x');

        -> '2003 6th August 06:22:58 2003'

例:

select *,from_unixtime(`datetime`,"%Y-%m-%d") from table

table換成你的表,datetime是你的int型欄位名,ok 了試一下吧。

好了,關於MySQL函式的介紹就到這裡,希望對大家有用。詳細內容見MySQL手冊