一、MySQL獲得當前日期時間函數
獲得當前日期+時間(date + time)函數:now()
mysql> select now();+-+| now() |+-+| 2021-08-12 20:20:46 |+-+獲得當前日期+時間(date + time)函數:sysdate()
sysdate()日期時間函數跟now()類似,不同之處在於:now()在執行開始時值就得到了,sysdate()在函數執行時動態得到值。看下面的例子就明白了:
mysql> select now(), sleep(3), sysdate();+-++-+| now() | sleep(3) | sysdate() |+-++-+| 2021-08-08 22:28:21 | 0 | 2008-08-08 22:28:24 |+-++-+sysdate()日期時間函數,一般情況下很少用到。
MySQL獲得當前時間戳函數:current_timestamp, current_timestamp()
mysql> select current_timestamp, current_timestamp();+-+-+| current_timestamp | current_timestamp() |+-+-+| 2021-08-12 12:22:24 | 2021-08-09 12:22:24 |+-+-+二、MySQL日期轉換函數、時間轉換函數
MySQL Date/Time to Str(日期/時間轉換為字符串)函數:date_format(date,format), time_format(time,format)
mysql> select date_format('2021-08-08 22:23:01', '%Y%m%d%H%i%s');+--+| date_format('2021-08-08 22:23:01', '%Y%m%d%H%i%s') |+--+| 20210808222301 |+--+MySQL日期、時間轉換函數:date_format(date,format), time_format(time,format)能夠把一個日期/時間轉換成各種各樣的字符串格式。它是str_to_date(str,format)函數的一個逆轉換。
MySQL Str to Date(字符串轉換為日期)函數:str_to_date(str, format)
select str_to_date('08/09/2008', '%m/%d/%Y'); select str_to_date('08/09/08' , '%m/%d/%y'); select str_to_date('08.09.2008', '%m.%d.%Y'); select str_to_date('08:09:30', '%h:%i:%s'); select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s');可以看到,str_to_date(str,format)轉換函數,可以把一些雜亂無章的字符串轉換為日期格式。另外,它也可以轉換為時間。「format」 可以參看MySQL手冊。
MySQL(日期、天數)轉換函數:to_days(date), from_days(days)
select to_days('0000-00-00'); select to_days('2008-08-08');MySQL(時間、秒)轉換函數:time_to_sec(time), sec_to_time(seconds)
select time_to_sec('01:00:05'); select sec_to_time(3605);MySQL拼湊日期、時間函數:makdedate(year,dayofyear),
maketime(hour,minute,second)select makedate(2001,31); select makedate(2001,32); select maketime(12,15,30);MySQL(Unix 時間戳、日期)轉換函數
unix_timestamp(),unix_timestamp(date),from_unixtime(unix_timestamp),from_unixtime(unix_timestamp,format)下面是示例:
select unix_timestamp(); select unix_timestamp('2008-08-08'); select unix_timestamp('2008-08-08 12:30:00'); select from_unixtime(1218290027); select from_unixtime(1218124800); select from_unixtime(1218169800); select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x');三、MySQL日期時間計算函數
MySQL為日期增加一個時間間隔:date_add()
set @dt = now();select date_add(@dt, interval 1 day); select date_add(@dt, interval 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);MySQL adddate(), addtime()函數,可以用date_add()來替代。下面是date_add()實現addtime()功能示例:
mysql> set @dt = '2008-08-09 12:12:33';
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 |+----+MySQL為日期減去一個時間間隔:date_sub()
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()日期時間函數和date_add()用法一致,不再贅述。
MySQL日期、時間相減函數:datediff(date1,date2), timediff(time1,time2)
MySQL datediff(date1,date2):兩個日期相減 date1 - date2,返回天數。
select datediff('2008-08-08', '2008-08-01'); select datediff('2008-08-01', '2008-08-08');MySQL timediff(time1,time2):兩個日期相減 time1 - time2,返回time差值。
select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); select timediff('08:08:08', '00:00:00');注意:timediff(time1,time2) 函數的兩個參數類型必須相同。
MySQL時間戳(timestamp)轉換、增、減函數:
timestamp(date) timestamp(dt,time) timestampadd(unit,interval,datetime_expr) timestampdiff(unit,datetime_expr1,datetime_expr2)請看示例部分:
select timestamp('2008-08-08'); select timestamp('2008-08-08 08:00:00', '01:01:01'); select timestamp('2008-08-08 08:00:00', '10 01:01:01');
select timestampadd(day, 1, '2008-08-08 08:00:00'); select date_add('2008-08-08 08:00:00', interval 1 day);MySQL timestampadd() 函數類似於 date_add()。
select timestampdiff(year,'2002-05-01','2001-01-01'); select timestampdiff(day ,'2002-05-01','2001-01-01'); select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00');
select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00');MySQL timestampdiff()函數就比datediff()功能強多了,datediff()只能計算兩個日期(date)之間相差的天數。
四、MySQL時區(timezone)轉換函數
convert_tz(dt,from_tz,to_tz)select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00');時區轉換也可以通過date_add, date_sub, timestampadd來實現。
select date_add('2008-08-08 12:00:00', interval -8 hour); select date_sub('2008-08-08 12:00:00', interval 8 hour); select timestampadd(hour, -8, '2008-08-08 12:00:00');
點擊進入公眾號,了解更多內容!