以下的文章主要講述的是MySQL數據庫的日期函數與時間函數MySQL 5.X)的實際應用的經驗總結,MySQL日期函數與時間函數在實際應用中出現的頻率還是很大的,以下的文章就是對這兩個函數的詳細描述。
MySQL 數據庫獲得當前日期時間 函數:
1.1 獲得當前日期+時間date + time)函數:now()
- mysql> select now();
- +---------------------+
- | now() |
- +---------------------+
- | 2008-08-08 22:20:46 |
- +---------------------+
除了 now() 函數能獲得當前的日期時間外,MySQL 中還有下面的函數:
- current_timestamp()
- ,current_timestamp
- ,localtime()
- ,localtime
- ,localtimestamp -- (v4.0.6)
- ,localtimestamp() -- (v4.0.6)
這些日期時間函數,都等同於 now()。鑒於 now() 函數簡短易記,建議總是使用 now() 來替代上面列出的函數。
1.2 獲得當前日期+時間date + time)函數:sysdate()
sysdate() 日期時間函數跟 now() 類似,不同之處在於:now() 在執行開始時值就得到了, sysdate() 在函數執行時動態得到值。看下面的例子就明白了:
- mysql> select now(), sleep(3), now();
- +---------------------+----------+---------------------+
- | now() | sleep(3) | now() |
- +---------------------+----------+---------------------+
- | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |
- +---------------------+----------+---------------------+mysql> select sysdate(), sleep(3), sysdate();
- +---------------------+----------+---------------------+
- | sysdate() | sleep(3) | sysdate() |
- +---------------------+----------+---------------------+
- | 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |
- +---------------------+----------+---------------------+
可以看到,雖然 中途 sleep 3 秒,但 now() 函數兩次的時間值是相同的; sysdate() 函數兩次得到的時間值相差 3 秒。MySQL 數據庫Manual 中是這樣描述 sysdate() 的:Return the time at which the function executes。
sysdate() 日期時間函數,一般情況下很少用到。
2. 獲得當前日期date)函數:curdate()
- mysql> select curdate();
- +------------+
- | curdate() |
- +------------+
- | 2008-08-08 |
- +------------+
其中,下面的兩個日期函數等同於 curdate():
current_date()
,current_date3. 獲得當前時間time)函數:curtime()
- mysql> select curtime();
- +-----------+
- | curtime() |
- +-----------+
- | 22:41:30 |
+-----------+其中,下面的兩個時間函數等同於 curtime():
current_time()
,current_time4. 獲得當前 UTC 日期時間函數:
- utc_date(), utc_time(), utc_timestamp()
- mysql> select utc_timestamp(), utc_date(), utc_time(), now()
- +---------------------+------------+------------+---------------------+
- | utc_timestamp() | utc_date() | utc_time() | now() |
- +---------------------+------------+------------+---------------------+
- | 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |
- +---------------------+------------+------------+---------------------+
因 為我國位於東八時區,所以本地時間 = UTC 時間 + 8 小時。UTC 時間在業務涉及多個國家和地區的時候,非常有用。
二、MySQL數據庫 日期時間 Extract選取) 函數。
1. 選取日期時間的各個部分:日期、時間、年、季度、月、日、小時、分鐘、秒、微秒
- set @dt = '2008-09-10 07:15:30.123456';
- select date(@dt); -- 2008-09-10
- select time(@dt); -- 07:15:30.123456
- select year(@dt); -- 2008
- select quarter(@dt); -- 3
- select month(@dt); -- 9
- select week(@dt); -- 36
- select day(@dt); -- 10
- select hour(@dt); -- 7
- select minute(@dt); -- 15
- select second(@dt); -- 30
- select microsecond(@dt);
1234562. MySQL Extract() 函數,可以上面實現類似的功能:
- set @dt = '2008-09-10 07:15:30.123456';
- select extract(year from @dt); -- 2008
- select extract(quarter from @dt); -- 3
- select extract(month from @dt); -- 9
- select extract(week from @dt); -- 36
- select extract(day from @dt); -- 10
- select extract(hour from @dt); -- 7
- select extract(minute from @dt); -- 15
- select extract(second from @dt); -- 30
- select extract(microsecond from @dt); -- 123456select extract(year_month from @dt); -- 200809
- select extract(day_hour from @dt); -- 1007
- select extract(day_minute from @dt); -- 100715
- select extract(day_second from @dt); -- 10071530
- select extract(day_microsecond from @dt); -- 10071530123456
- select extract(hour_minute from @dt); -- 715
- select extract(hour_second from @dt); -- 71530
- select extract(hour_microsecond from @dt); -- 71530123456
- select extract(minute_second from @dt); -- 1530
- select extract(minute_microsecond from @dt); -- 1530123456
- select extract(second_microsecond from @dt);
30123456MySQL Extract() 函數除了沒有date(),time() 的功能外,其他功能一應具全。並且還具有選取‘day_microsecond’ 等功能。注意這裡不是只選取 day 和 microsecond,而是從日期的 day 部分一直選取到 microsecond 部分。夠強悍的吧!
以上的相關內容就是對MySQL數據庫的日期函數、時間函數MySQL 5.X)的部分內容介紹,望你能有所收獲。