常用的mysql日期函數

因為快要畢業了,也去過幾家公司面試,其中去過一家面試php開發的,有道sql有優化題,當時對phpphp并沒有研究和系統的學習,囧。。。
mysql有主要的內建函數如下:

now()
返回當前的日期和時間

curdate()
返回當前的日期

curtime()
返回當前的時間

date()
提取日期或日期/時間php的日期部分

php()
返回日期/時間按的單獨部分

php()
給日期添加指定的時間間隔

php()
從日期減去指定的時間間隔

datediff()
返回兩個日期之間的天數

php()
用不同的格式顯示日期/時間

還包括一些返回日期的各個部分函數:
選取日期時間的各個部分:日期、時間、年、季度、月、日、小時、分鐘、秒、微秒
set @dt = ‘2008-09-10 07:15:30.123456’;

select date(@dt); — 2008-09-10
select time(@dt); — 07:15:30.123456
select year(@dt); — 2008
select quarter(@dt); — 3
select month(@dt); — 9
select week(@dt); — 36
select day(@dt); — 10
select hour(@dt); — 7
select minute(@dt); — 15
select second(@dt); — 30
select microsecond(@dt); — 123456
這些函數對日期的比較有很大的幫助,很多新手在處理日期函數的時候不太會處理,容易出錯,下面舉個例子吧:
假如有個表product有個字段add_time,它的php為datetime,有人可能會這樣寫sql:
select * from product where add_time = ‘2013-01-12’
對于這種語句,如果你存儲的格式是yy-mm-dd是這樣的,那么ok,如果你存儲的格式是:2013-01-12 23:23:56這種格式你就悲劇了,這是你就可以使用date()函數用來返回日期的部分,所以這條sql應該如下處理:
select * from product where date(add_time) = ‘2013-01-12’
再來一個,如果你要查詢2013年1月份加入的產品呢?
select * from product where date(add_time) between ‘2013-01-01’ and ‘2013-01-31’
你還可以這樣寫:
select * from product where year(add_time) = 2013 and month(add_time) = 1
這些你該知道mysql日期函數在對你處理日期比較問題的作用了吧?

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享