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

2021-05-21 22:50:41 字數 3485 閱讀 3185

這些函式都是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

dayweek 

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 **:

%

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手冊

MySQL查詢時間函式

今天是 select now 2015 09 28 13 48 12 查詢當天,格式為yyyy mm dd select curdate 2015 09 28 查詢當天,格式為yyyy mm dd hh mm ss select now 2015 09 28 13 42 00 查詢當天0點,格式為y...

mysql時間查詢 MySQL按時間查詢

mysql 今天select from 表名 where to days 時間欄位名 to days now 昨天select from 表名 where to days now to days 時間欄位名 1 近7天select from 表名 where date sub curdate int...

mysql怎麼新增時間 MYSQL中新增時間

1.在建立新記錄和修改現有記錄的時候都對這個資料列重新整理 timestamp default current timestamp on update current timestamp 2.在建立新記錄的時候把這個字段設定為當前時間,但以後修改時,不再重新整理它 timestamp default...