mysql日期加减
一、MySQL?為日期增加一個時間間隔:date_add()。
1、? 示例:
set @dt = now();
select date_add(@dt, interval 1 day);?? ??????? - 加1天
select date_add(@dt, interval 1 hour);?? ???????????? -加1小時
select date_add(@dt, interval 1 minute);??? - 加1分鐘
select date_add(@dt, interval 1 second); ??????????? -加1秒
select date_add(@dt, interval 1 microsecond);???? -加1毫秒
select date_add(@dt, interval 1 week);???????? -加1周
select date_add(@dt, interval 1 month);??????? -加1月
select date_add(@dt, interval 1 quarter);???????????? -加1季
select date_add(@dt, interval 1 year);?????????? -加1年
2、??mysql?adddate(), addtime()函數,可以用 date_add() 來替代。
二、MySQL 為日期減去一個時間間隔:date_sub():
1、? 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
2、? MySQL 中還有兩個函數 subdate(), subtime(),建議,用 date_sub() 來替代。
三、MySQL 另類日期函數:period_add(P,N), period_diff(P1,P2)
??函數參數“P”的格式為“YYYYMM”或者“YYMM”,第二個參數“N”表示增加或減去 N month(月)。
? 1、MySQL period_add(P,N):日期加/減去N月。
?? 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 個月。
?? mysql> select period_diff(200808, 200801);
?? period_diff(200808, 200801)
?? 結果:7
?? 2、MySQL 中,這兩個日期函數,一般情況下很少用到。
四、MySQL 日期、時間相減函數:datediff(date1,date2), timediff(time1,time2)
??? MySQL datediff(date1,date2):兩個日期相減 date1 date2,返回天數。
??? 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 差值。
??? 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) 函數的兩個參數類型必須相同。
五、當前時間的幾個函數:
1、?? NOW (); 當前具體的日期和時間,
2、?? CURDATE (); 當前日期
3、?? CURTIME(); 當前時間
4、?? DATE ( date ); 提取日期或日期/時間表達式的日期部分
5、?? DATE_ADD ( date, INTERVAL? expr? type); 給日期添加指定的時間間隔,
? expr 表時間間隔,type參數可以是下列值:
? 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
6、?? DATE_SUB (date, INTERVAL ?expr ?type);? 從日期送去指定的時間間隔。
? expr 參數是您希望添加的時間間隔, type參數同DATE_ADD()。
7、?? DATEDIFF ( date1, date2 ); 返回兩個日期之間的天數,只有值的日期部分參與計算。
8、?? DATE_FORMAT (date, format); 用不同的格式顯示日期/時間。
format 規定日期/時間的輸出格式。格式有:
格式
描述
?
格式
描述
%a
縮寫星期名
%p
AM 或 PM
%b
縮寫月名
%r
時間,12-小時(hh:mm:ss AM 或 PM)
%c
月,數值
%S
秒(00-59)
%D
帶有英文前綴的月中的天
%s
秒(00-59)
%d
月的天,數值(00-31)
%T
時間, 24-小時 (hh:mm:ss)
%e
月的天,數值(0-31)
%U
周 (00-53) 星期日是一周的第一天
%f
微秒
%u
周 (00-53) 星期一是一周的第一天
%H
小時 (00-23)
%V
周 (01-53) 星期日是一周的第一天,與 %X 使用
%h
小時 (01-12)
%v
周 (01-53) 星期一是一周的第一天,與 %x 使用
%I
小時 (01-12)
%W
星期名
%i
分鐘,數值(00-59)
%w
周的天 (0=星期日, 6=星期六)
%j
年的天 (001-366)
%X
年,其中的星期日是周的第一天,4 位,與 %V 使用
%k
小時 (0-23)
%x
年,其中的星期一是周的第一天,4 位,與 %v 使用
%l
小時 (1-12)
%Y
年,4 位
%M
月名
%y
年,2 位
%m
月,數值(00-12)
注:
UPDATE `deadline` SET `end_time`=date_add(`end_time`, interval 1 month) where `function_type`=1 加一個月轉載于:https://www.cnblogs.com/vofill/p/7442476.html
總結
- 上一篇: SQL 创建存储过程,让主键自增
- 下一篇: CentOS6.9 下编译安装MySQL