1. 程式人生 > 其它 >MySQL常用的單行函式彙總3——日期時間函式

MySQL常用的單行函式彙總3——日期時間函式

日期時間函式:

 

1 #3.1  獲取日期、時間
2 SELECT CURDATE(),CURRENT_DATE(),CURTIME(),NOW(),SYSDATE(),
3 UTC_DATE(),UTC_TIME()
4 FROM DUAL;
5 
6 SELECT CURDATE(),CURDATE() + 0,CURTIME() + 0,NOW() + 0
7 FROM DUAL;

CURDATE(),CURRENT_DATE():獲取當前的日期(到日)

CURTIME,NOW,SYSDATE:獲取當前的時間,到秒 

CURDATE()+0等:+0後,輸出的內容相較之前在年月日時分秒之間少了一個'-'

 

1 #3.2 日期與時間戳的轉換
2 SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP('2021-10-01 12:12:32'),
3 FROM_UNIXTIME(1635173853),FROM_UNIXTIME(1633061552)
4 FROM DUAL;

UNIX_TIMESTAMP():無參則將當前時間轉為時間戳,有參則把引數中日期轉為時間戳,時間戳表示該日期到1.1.1的秒數

 

 1 #3.3 獲取月份、星期、星期數、天數等函式
 2 SELECT YEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE()),
3 HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDATE()) 4 FROM DUAL; 5 6 7 SELECT MONTHNAME('2021-10-26'),DAYNAME('2021-10-26'),WEEKDAY('2021-10-26'), 8 QUARTER(CURDATE()),WEEK(CURDATE()),DAYOFYEAR(NOW()), 9 DAYOFMONTH(NOW()),DAYOFWEEK(NOW()) 10 FROM DUAL;

YEAR(DATE型別):獲取該DATE型別的年份,其他屬性同理

MONTHNAME(DATE型別):獲取月份的英文名,DAYNAME獲取星期幾的英文名,WEEKDAY表示所在周的編號(以上較為繁瑣,記住函式名字後去程式設計試驗即可明白意義)

#3.4 日期的操作函式

SELECT EXTRACT(SECOND FROM NOW()),EXTRACT(DAY FROM NOW()),
EXTRACT(HOUR_MINUTE FROM NOW()),EXTRACT(QUARTER FROM '2021-05-12')
FROM DUAL;

EXTRACT(HOUR_MINUTE FROM NOW()):從當前的時間中提取出時和分兩個元素(中間是之間相連的沒有分隔符)

 

1 #3.5 時間和秒鐘轉換的函式
2 SELECT TIME_TO_SEC(CURTIME()),
3 SEC_TO_TIME(83355)
4 FROM DUAL;

將時分秒轉化為秒數:TIME_TO_SEC,將秒數轉為時分秒:SEC_TO_TIME

 

1 #3.6 計算日期和時間的函式
2 
3 SELECT NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR),#當前日期基礎上+1年
4 DATE_ADD(NOW(),INTERVAL -1 YEAR),
5 DATE_SUB(NOW(),INTERVAL 1 YEAR)#-(-1)年
6 FROM DUAL;

 

 1 #格式化:
 2 SELECT DATE_FORMAT(CURDATE(),'%Y-%M-%D'),
 3 DATE_FORMAT(NOW(),'%Y-%m-%d'),TIME_FORMAT(CURTIME(),'%h:%i:%S'),
 4 DATE_FORMAT(NOW(),'%Y-%M-%D %h:%i:%S %W %w %T %r')
 5 FROM DUAL;
 6 
 7 #解析:格式化的逆過程
 8 SELECT STR_TO_DATE('2021-October-25th 11:37:30 Monday 1','%Y-%M-%D %h:%i:%S %W %w')
 9 FROM DUAL;
10 
11 SELECT GET_FORMAT(DATE,'USA')
12 FROM DUAL;
13 
14 SELECT DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'USA'))
15 FROM DUAL;