mysql時間函式用法

2021-08-25 18:48:16 字數 4231 閱讀 3333

mysql查詢一段時間記錄2008-12-09 15:0524小時內記錄(即86400秒)

$sql="select video_id,count(id)as n from `rec_down` where unix_timestamp(now())-unix_timestamp(add_time)<=86400 group by video_id order by n desc ";

$sql="select a.id,a.title,b.n from video_info a,(".$sql.")b where a.id=b.video_id order by n desc limit 20";

n天內記錄

where to_days(now()) - to_days(時間字段) <= n

今天的記錄

where date(時間字段)=date(now())

或where to_days(時間字段) = to_days(now());

查詢一周:

select * from table where date_sub(curdate(), interval 7 day) <= date(column_time);

查詢乙個月:

select * from table where date_sub(curdate(), interval interval 1 month) <= date(column_time);

查詢選擇所有 date_col 值在最後 30 天內的記錄。

mysql> select something from tbl_name

where to_days(now()) - to_days(date_col) <= 30; //真方便,以前都是自己寫的,竟然不知道有這,失敗.

dayofweek(date)

返回 date 的星期索引(1 = sunday, 2 = monday, 7 = saturday)。索引值符合 odbc 的標準。

mysql> select dayofweek(』1998-02-03』);

-> 3

weekday(date)

返回 date 的星期索引(0 = monday, 1 = tuesday, 6 = sunday):

mysql> select weekday(』1998-02-03 22:23:00』);

-> 1

mysql> 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 到 53 (是的,可能有第 53 周的開始)。兩個引數形式的 week() 允許你指定一周是否以星期日或星期一開始,以及返回值為 0-53 還是 1-52。 這裡的乙個表顯示第二個引數是如何工作的:

值 含義

0 一周以星期日開始,返回值範圍為 0-53

1 一周以星期一開始,返回值範圍為 0-53

2 一周以星期日開始,返回值範圍為 1-53

3 一周以星期一開始,返回值範圍為 1-53 (iso 8601)

mysql> select week(』1998-02-20』);

-> 7

mysql> select week(』1998-02-20』,0);

-> 7

mysql> select week(』1998-02-20』,1);

-> 8

mysql> select week(』1998-12-31』,1);

-> 53

mysql> select year(』2000-01-01』), week(』2000-01-01』,0);

-> 2000, 0

mysql> select week(』2000-01-01』,2);

-> 52

你可能會爭辯說,當給定的日期值實際上是 1999 年的第 52 周的一部分時,mysql 對 week() 函式應該返回 52。我們決定返回 0 ,是因為我們希望該函式返回「在指定年份中是第幾周」。當與其它的提取日期值中的月日值的函式結合使用時,這使得 week() 函式的用法可靠。 如果你更希望能得到恰當的年-周值,那麼你應該使用引數 2 或 3 做為可選引數,或者使用函式 yearweek() :

mysql> select yearweek(』2000-01-01』);

-> 199952

mysql> select mid(yearweek(』2000-01-01』),5,2);

-> 52

year(date)

返回 date 的年份,範圍為 1000 到 9999:

mysql> select year(』98-02-03』);

-> 1998

yearweek(date)

yearweek(date,first)

返回乙個日期值是的哪一年的哪一周。第二個引數的形式與作用完全與 week() 的第二個引數一致。注意,對於給定的日期引數是一年的第一周或最後一周的,返回的年份值可能與日期引數給出的年份不一致:

mysql> select yearweek(』1987-01-01』);

-> 198653

注意,對於可選引數 0 或 1,周值的返回值不同於 week() 函式所返回值(0), week() 根據給定的年語境返回周值。

hour(time)

返回 time 的小時值,範圍為 0 到 23:

mysql> select hour(』10:05:03』);

-> 10

minute(time)

返回 time 的分鐘值,範圍為 0 到 59:

mysql> select minute(』98-02-03 10:05:03』);

-> 5

second(time)

返回 time 的秒值,範圍為 0 到 59:

mysql> select second(』10:05:03』);

-> 3

period_add(p,n)

增加 n 個月到時期 p(格式為 yymm 或 yyyymm)中。以 yyyymm 格式返回值。 注意,期間引數 p 不是 乙個日期值:

mysql> select period_add(9801,2);

-> 199803

period_diff(p1,p2)

返回時期 p1 和 p2 之間的月數。p1 和 p2 應該以 yymm 或 yyyymm 指定。 注意,時期引數 p1 和 p2 不是 日期值:

mysql> select period_diff(9802,199703);

-> 11

date_add(date,interval expr type)

date_sub(date,interval expr type)

adddate(date,interval expr type)

subdate(date,interval expr type)

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 interva...

sqlserver 時間函式用法

1.dateadd datepart,number,date 現在,我們希望向 orderdate 新增 2 天,這樣就可以找到付款日期,我們使用如下 select 語句 select orderid,dateadd day,2,orderdate as orderpaydate from orde...

mysql時間函式

這些函式都是mysql自帶的,可以直接使用在php寫的mysql查詢語句中哦 1 curdate 或current date 和curtime 或current time 這兩個函式是比較常用到的,顧名思義,第乙個返回當前日期,第二個返回當前時間 可以在mysql客戶端或者php語句裡寫 selec...