Mysql——日期函數,時間操作(匯總)


英文文檔連接:https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html

mysql 獲取當天0點 和 當天23點59分59秒

SELECT DATE_FORMAT('2019-08-08','%Y-%m-%d %H:%i:%s');

SELECT DATE_SUB( DATE_ADD('2019-08-08', INTERVAL 1 DAY),INTERVAL 1 SECOND)

  以下翻譯至官方文檔:

  • ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days) 將指定的時間間隔值加到時間上
mysql> SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY); -> '2008-02-02' mysql> SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY); -> '2008-02-02'

        如果不指定時間間隔單位時,默認為單位為天

mysql> SELECT ADDDATE('2008-01-02', 31); -> '2008-02-02'
  •  ADDTIME(expr1,expr2) 將時間表達式expr2加到expr1上
mysql> SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002'); -> '2008-01-02 01:01:01.000001' mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998'); -> '03:00:01.999997'
  • CURDATE() 以‘YYYY-MM-DD’形式或值的形式返回當前時間
mysql> SELECT CURDATE(); -- 默認返回的形式是'YYYY-MM-DD' -> '2008-06-13' mysql> SELECT CURDATE() + 0; -- +0返回的數值 -> 20080613
  • DATE(expr)  獲取指定時間的年月日部分
mysql> SELECT DATE('2003-12-31 01:02:03'); -> '2003-12-31'
  • DATEDIFF(expr1,expr2) 返回時間值expr1 - 時間值expr2之間相差的天數。
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30'); -> 1 mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31'); -> -31
  • DATE_ADD(date,INTERVAL expr unit)  時間添加,將指定的時間間隔expr添加至date上,返回值取決於date的格式
  • DATE_SUB(date,INTERVAL expr unit)  時間相減,將指定的時間間隔expr添加至date上,返回值取決於date的格式 
復制代碼
mysql> SELECT DATE_ADD('2018-05-01',INTERVAL 1 DAY); -> '2018-05-02' mysql> SELECT DATE_SUB('2018-05-01',INTERVAL 1 YEAR); -> '2017-05-01' mysql> SELECT DATE_ADD('2020-12-31 23:59:59',INTERVAL 1 SECOND); -> '2021-01-01 00:00:00' mysql> SELECT DATE_ADD('2018-12-31 23:59:59', INTERVAL 1 DAY); -> '2019-01-01 23:59:59' mysql> SELECT DATE_ADD('2100-12-31 23:59:59',INTERVAL '1:1' MINUTE_SECOND); -> '2101-01-01 00:01:00' mysql> SELECT DATE_SUB('2025-01-01 00:00:00', INTERVAL '1 1:1:1' DAY_SECOND); -> '2024-12-30 22:58:59' mysql> SELECT DATE_ADD('1900-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR); -> '1899-12-30 14:00:00' mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY); -> '1997-12-02' mysql> SELECT DATE_ADD('1992-12-31 23:59:59.000002',INTERVAL '1.999999' SECOND_MICROSECOND); -> '1993-01-01 00:00:01.000001'
復制代碼
  • DATE_FORMAT(date,format) date根據format的格式轉換成字符串
復制代碼
mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y'); -> 'Sunday October 2009' mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s'); -> '22:23:00' mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00', -> '%D %y %a %d %m %b %j'); -> '4th 00 Thu 04 10 Oct 277' mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', -> '%H %k %I %r %T %S %w'); -> '22 22 10 10:23:00 PM 22:23:00 00 6' mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V'); -> '1998 52' mysql> SELECT DATE_FORMAT('2006-06-00', '%d'); -> '00' mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%Y%m%d%H%i%s'); -> '19971004222300'
復制代碼
  • DAYNAME(date) 返回指定日期是周幾
mysql> SELECT DAYNAME('2007-02-03'); -> 'Saturday'
  • DAYOFMONTH(date) 返回指定日期是這個月的第幾天,返回數值
mysql> SELECT DAYOFMONTH('2007-02-03'); -> 3
  • DAYOFWEEK(date) 返回指定日期的周幾(1=周日,2=星期一,…,7=周六)
mysql> SELECT DAYOFWEEK('2007-02-03'); -> 7
  • DAYOFYEAR(date) 返回一年中的第幾天(1-366)
mysql> SELECT DAYOFYEAR('2007-02-03'); -> 34
  • FROM_DAYS(N) 給定天數N,返回DATE
mysql> SELECT FROM_DAYS(730669); -> '2000-07-03'
  • FROM_UNIXTIME(unix_timestamp[,format]) 將時間戳轉換成‘YYYY-MM-DD hh:mm:ss’格式或者指定格式
mysql> SELECT FROM_UNIXTIME(1447430881); -> '2015-11-13 10:08:01' mysql> SELECT FROM_UNIXTIME(1447430881) + 0; -> 20151113100801 mysql> SELECT FROM_UNIXTIME(1447430881,'%Y %D %M %h:%i:%s %x'); -> '2015 13th November 10:08:01 2015'
  • LAST_DAY(date) 返回當月最后一天的相應值
復制代碼
mysql> SELECT LAST_DAY('2003-02-05'); -> '2003-02-28' mysql> SELECT LAST_DAY('2004-02-05'); -> '2004-02-29' mysql> SELECT LAST_DAY('2004-01-01 01:01:01'); -> '2004-01-31' mysql> SELECT LAST_DAY('2003-03-32'); -> NULL
復制代碼
  • NOW([fsp]) 返回當前日期'YYYY-MM-DD hh:mm:ss'或作為值的YYYYMMDDhhmmss 
mysql> SELECT NOW(); -> '2007-12-15 23:50:26' mysql> SELECT NOW() + 0; -> 20071215235026.000000
  • PERIOD_ADD(P,N) 將N個月添加到時間P中(其中P只能是‘YYMM’或‘YYYYMM’)格式,返回格式為‘YYYYMM’
mysql> SELECT PERIOD_ADD(200801,2); -> 200803
  • SYSDATE([fsp]) 獲取當前執行時間,與now()不一樣,now()的時間是恆定的,而sysdate()是執行該函數的時間
復制代碼
mysql> SELECT NOW(), SLEEP(2), NOW(); +---------------------+----------+---------------------+ | NOW() | SLEEP(2) | NOW() | +---------------------+----------+---------------------+ | 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 | +---------------------+----------+---------------------+  mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE(); +---------------------+----------+---------------------+ | SYSDATE() | SLEEP(2) | SYSDATE() | +---------------------+----------+---------------------+ | 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 | +---------------------+----------+---------------------+
復制代碼
  • UNIX_TIMESTAMP([date]) 如果不帶參數,則返回一個unix時間戳;如果帶date格式,則返回與'1970-01-01 00:00:00'UTC 相差的秒數形式的參數值 
mysql> SELECT UNIX_TIMESTAMP(); -> 1447431666 mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19'); -> 1447431619 mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012'); -> 1447431619.012
  • CONVERT_TZ(dt,from_tz,to_tz) 將dt的時間值從from_tz的時區轉換至to_tz的時區
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET'); -> '2004-01-01 13:00:00' mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00'); -> '2004-01-01 22:00:00'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM