MySQL學習記錄--操作時間資料

Pyerlife發表於2016-11-30

1、返回日期的時間函式

  date_add() : 可以為指定日期增加/減少任意一段時間間隔。下面舉例將當前日期增加一個月和減少一個月

mysql> select date_add(current_date(), interval 1 month) as add_one_month;
+---------------+
| add_one_month |
+---------------+
| 2016-12-30    |
+---------------+
1 row in set (0.00 sec)

mysql> select date_add(current_date(), interval -1 month) as reduce_one_month;
+------------------+
| reduce_one_month |
+------------------+
| 2016-10-30       |
+------------------+
1 row in set (0.00 sec)

  格式:date_add('要修改的時間',interval 數量 時間間隔型別), 下面展示一些常見的時間間隔型別

間隔名稱 描述
Second 秒數
Minute 分鐘數
Hour 小時數
Day 天數
Month 月份
Year 年份
Minute_second 分鐘和秒,以":"分隔
Hour_second 小時、分鐘和秒,以":"分隔
Year_month 年份和月份,以"-"分隔

   下面對時間間隔後三種舉例:

  ①、將當前時間增加3小時20分鐘

mysql> select current_timestamp;  -- 當前時間
+---------------------+
| current_timestamp   |
+---------------------+
| 2016-11-30 15:22:46 |
+---------------------+
1 row in set (0.00 sec)

mysql> select date_add(current_timestamp, interval '3:20:00' Hour_second) as add_HourSecond;
+---------------------+
| add_HourSecond      |
+---------------------+
| 2016-11-30 18:42:49 |
+---------------------+
1 row in set (0.00 sec)

  ②、將日期'2000-01-01'增加16年10個月

mysql> select date_add('2000-01-01', interval '16-10' Year_month) as add_Year_month;
+----------------+
| add_Year_month |
+----------------+
| 2016-11-01     |
+----------------+
1 row in set (0.00 sec)

  

函式last_day() : 返回所求月份的最後一天

  舉例:求"2016-01-01"該月的最後一天

mysql> select last_day('2016-01-01');
+------------------------+
| last_day('2016-01-01') |
+------------------------+
| 2016-01-31             |
+------------------------+
1 row in set (0.00 sec)

 無論提供的引數是date型還是datetime型,last_day()函式都將返回一個date值

 

2、返回字串的時間函式

  dayname() : 返回所求的日期是星期幾

  舉例:求當前日期是星期幾

mysql> select dayname(current_date);
+-----------------------+
| dayname(current_date) |
+-----------------------+
| Wednesday             |
+-----------------------+
1 row in set (0.00 sec)

  year()、month()、day()、time()...提取部分時間

mysql> select year(current_date),month(current_date),day(current_date),time(current_timestamp);
+--------------------+---------------------+-------------------+-------------------------+
| year(current_date) | month(current_date) | day(current_date) | time(current_timestamp) |
+--------------------+---------------------+-------------------+-------------------------+
|               2016 |                  11 |                30 | 16:12:57                |
+--------------------+---------------------+-------------------+-------------------------+
1 row in set (0.00 sec)

 

3、返回數字的時間函式

  datediff() : 計算兩個日期相隔的天數

  舉例:計算"2000-01-01"距離現在有多少天

mysql> select datediff('2016-11-30', '2000-01-01');
+--------------------------------------+
| datediff('2016-11-30', '2000-01-01') |
+--------------------------------------+
|                                 6178 |
+--------------------------------------+
1 row in set (0.00 sec)

  注:datediff()函式會忽略引數中的時鐘值。

    sql server 同樣具備datediff()函式,但可以在指定時間間隔的型別(如年、月、日、小時等)。sql server 實現上一個例子的方法:

select datediff(day, '2016-11-30', '2000-01-01');

 

相關文章