mysql 月份差_MySQL时间差返回月个数
Sql代碼??
select?PERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m'))
1. MySQL 為日期增加一個時間間隔:date_add()
Sql代碼??
set?@dt?=?now();
select?date_add(@dt,?interval?1?day);?--?add?1?day
select?date_add(@dt,?interval?1?hour);?--?add?1?hour
select?date_add(@dt,?interval?1?minute);?--?...
select?date_add(@dt,?interval?1?second);
select?date_add(@dt,?interval?1?microsecond);
select?date_add(@dt,?interval?1?week);
select?date_add(@dt,?interval?1?month);
select?date_add(@dt,?interval?1?quarter);
select?date_add(@dt,?interval?1?year);
select?date_add(@dt,?interval?-1?day);?--?sub?1?day
MySQL adddate(), addtime()函數(shù),可以用 date_add() 來替代。下面是 date_add() 實現(xiàn) addtime() 功能示例:
Sql代碼??
mysql>?set?@dt?=?'2008-08-09?12:12:33';
mysql>
mysql>?select?date_add(@dt,?interval?'01:15:30'?hour_second);
+------------------------------------------------+
|?date_add(@dt,?interval?'01:15:30'?hour_second)?|
+------------------------------------------------+
|?2008-08-09?13:28:03?|
+------------------------------------------------+
mysql>?select?date_add(@dt,?interval?'1?01:15:30'?day_second);
+-------------------------------------------------+
|?date_add(@dt,?interval?'1?01:15:30'?day_second)?|
+-------------------------------------------------+
|?2008-08-10?13:28:03?|
+-------------------------------------------------+
date_add() 函數(shù),分別為 @dt 增加了“1小時 15分 30秒” 和 “1天 1小時 15分 30秒”。建議:總是使用 date_add() 日期時間函數(shù)來替代 adddate(), addtime()。
2. MySQL 為日期減去一個時間間隔:date_sub()
Sql代碼??
mysql>?select?date_sub('1998-01-01?00:00:00',?interval?'1?1:1:1'?day_second);
+----------------------------------------------------------------+
|?date_sub('1998-01-01?00:00:00',?interval?'1?1:1:1'?day_second)?|
+----------------------------------------------------------------+
|?1997-12-30?22:58:59?|
+----------------------------------------------------------------+
MySQL date_sub() 日期時間函數(shù) 和 date_add() 用法一致,不再贅述。另外,MySQL 中還有兩個函數(shù) subdate(), subtime(),建議,用 date_sub() 來替代。
3. MySQL 另類日期函數(shù):period_add(P,N), period_diff(P1,P2)
函數(shù)參數(shù)“P” 的格式為“YYYYMM” 或者 “YYMM”,第二個參數(shù)“N” 表示增加或減去 N month(月)。
MySQL period_add(P,N):日期加/減去N月。
Sql代碼??
mysql>?select?period_add(200808,2),?period_add(20080808,-2)
+----------------------+-------------------------+
|?period_add(200808,2)?|?period_add(20080808,-2)?|
+----------------------+-------------------------+
|?200810?|?20080806?|
+----------------------+-------------------------+
MySQL period_diff(P1,P2):日期 P1-P2,返回 N 個月。
Sql代碼??
mysql>?select?period_diff(200808,?200801);
+-----------------------------+
|?period_diff(200808,?200801)?|
+-----------------------------+
|?7?|
+-----------------------------+
在 MySQL 中,這兩個日期函數(shù),一般情況下很少用到。
4. MySQL 日期、時間相減函數(shù):datediff(date1,date2), timediff(time1,time2)
MySQL datediff(date1,date2):兩個日期相減 date1 - date2,返回天數(shù)。
Sql代碼??
select?datediff('2008-08-08',?'2008-08-01');?--?7
select?datediff('2008-08-01',?'2008-08-08');?--?-7
MySQL timediff(time1,time2):兩個日期相減 time1 - time2,返回 time 差值。
Sql代碼??
select?timediff('2008-08-08?08:08:08',?'2008-08-08?00:00:00');?--?08:08:08
select?timediff('08:08:08',?'00:00:00');?--?08:08:08
注意:timediff(time1,time2) 函數(shù)的兩個參數(shù)類型必須相同。
MySQL查詢的方式很多,下面為您介紹的MySQL查詢實現(xiàn)的是查詢本周、上周、本月、上個月份的數(shù)據(jù),如果您對MySQL查詢方面感興趣的話,不妨一看。
查詢當(dāng)前這周的數(shù)據(jù)
Sql代碼??
SELECT?name,submittime?FROM?enterprise?WHERE?YEARWEEK(date_format(submittime,'%Y-%m-%d'))?=?YEARWEEK(now());
查詢上周的數(shù)據(jù)
Sql代碼??
SELECT?name,submittime?FROM?enterprise?WHERE?YEARWEEK(date_format(submittime,'%Y-%m-%d'))?=?YEARWEEK(now())-1;
查詢當(dāng)前月份的數(shù)據(jù)
Sql代碼??
select?name,submittime?from?enterprise???where?date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')
查詢距離當(dāng)前現(xiàn)在6個月的數(shù)據(jù)
Sql代碼??
select?name,submittime?from?enterprise?where?submittime?between?date_sub(now(),interval?6?month)?and?now();
查詢上個月的數(shù)據(jù)
Sql代碼??
select?name,submittime?from?enterprise???where?date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(),?INTERVAL?1?MONTH),'%Y-%m')
Sql代碼??
select?*?from?`user`?where?DATE_FORMAT(pudate,'%Y%m')?=?DATE_FORMAT(CURDATE(),'%Y%m')?;
select?*?from?user?where?WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d'))?=?WEEKOFYEAR(now())
select?*
from?user
where?MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d'))?=?MONTH(now())
select?*
from?[user]
where?YEAR(FROM_UNIXTIME(pudate,'%y-%m-%d'))?=?YEAR(now())
and?MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d'))?=?MONTH(now())
select?*
from?[user]
where?pudate?between?上月最后一天
and?下月第一天
總結(jié)
以上是生活随笔為你收集整理的mysql 月份差_MySQL时间差返回月个数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不孕不育科分男女吗
- 下一篇: linux mysql 5.7.12_L