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
先舉個例子
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引數列表
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)-這個函式從提供的日期中摘取出相關資訊
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等等吧。
%
a
-
縮寫的星期名
%
b
-
縮寫的月份名
%
d
-
月份中的天數
%
H
-
小時
[
帶前導零
]
%
I
-
分鐘
[
帶前導零
]
%
j
-
一年中的天數
%
m
-
月份
[
帶前導零
]
%
M
-
月份
[
完整
]
%
p
- [
AM或PM
]
%
r
-
時間
[
12小時格式
]
%
S
-
秒
[
帶前導零
]
%
T
-
時間
[
24小時格式
]
%
w
-
一週中的天數
[
0
-
6
]-
這裡想不通為什麼DAYOFWEEK返回的是1
-
7
%
W
-
星期名
[
完整
]
%
Y
-
年份
[
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手冊