SQL - ฟังก์ชันวันที่
ตารางต่อไปนี้มีรายการฟังก์ชันที่เกี่ยวข้องกับวันที่และเวลาที่สำคัญทั้งหมดที่พร้อมใช้งานผ่าน SQL มีฟังก์ชั่นอื่น ๆ อีกมากมายที่รองรับโดย RDBMS ของคุณ รายการที่กำหนดขึ้นอยู่กับ MySQL RDBMS
ซีเนียร์ | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | ADDDATE () เพิ่มวันที่ |
2 | ADDTIME () เพิ่มเวลา |
3 | CONVERT_TZ () แปลงจากเขตเวลาหนึ่งไปเป็นอีกเขตหนึ่ง |
4 | CURDATE () ส่งคืนวันที่ปัจจุบัน |
5 | CURRENT_DATE (), CURRENT_DATE คำพ้องความหมายสำหรับ CURDATE () |
6 | CURRENT_TIME (), CURRENT_TIME คำพ้องความหมายสำหรับ CURTIME () |
7 | CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP คำพ้องความหมายสำหรับ NOW () |
8 | CURTIME () ส่งกลับเวลาปัจจุบัน |
9 | DATE_ADD () เพิ่มวันที่สองวัน |
10 | รูปแบบวันที่() จัดรูปแบบวันที่ตามที่ระบุ |
11 | DATE_SUB () ลบวันที่สองวัน |
12 | วันที่ () แยกส่วนวันที่ของนิพจน์วันที่หรือวันที่และเวลา |
13 | DATEDIFF () ลบวันที่สองวัน |
14 | วัน() ไวพจน์ของ DAYOFMONTH () |
15 | DAYNAME () ส่งกลับชื่อของวันธรรมดา |
16 | DAYOFMONTH () ส่งคืนวันของเดือน (1-31) |
17 | DAYOFWEEK () ส่งกลับดัชนีวันธรรมดาของอาร์กิวเมนต์ |
18 | DAYOFYEAR () ส่งคืนวันของปี (1-366) |
19 | สารสกัด แยกส่วนของวันที่ |
20 | FROM_DAYS () แปลงตัวเลขวันเป็นวันที่ |
21 | FROM_UNIXTIME () จัดรูปแบบวันที่เป็นเวลาประทับ UNIX |
22 | ชั่วโมง() แยกชั่วโมง |
23 | วันสุดท้าย ส่งคืนวันสุดท้ายของเดือนสำหรับอาร์กิวเมนต์ |
24 | LOCALTIME (), LOCALTIME ไวพจน์ของ NOW () |
25 | LOCALTIMESTAMP, LOCALTIMESTAMP () ไวพจน์ของ NOW () |
26 | ทำ () สร้างวันที่จากปีและวันของปี |
27 | ทำเวลา ทำเวลา() |
28 | ไมโครวินาที () ส่งคืนไมโครวินาทีจากอาร์กิวเมนต์ |
29 | นาที() ส่งคืนนาทีจากอาร์กิวเมนต์ |
30 | เดือน() คืนเดือนจากวันที่ผ่านไป |
31 | MONTHNAME () ส่งกลับชื่อของเดือน |
32 | ตอนนี้ () ส่งคืนวันที่และเวลาปัจจุบัน |
33 | PERIOD_ADD () เพิ่มช่วงเวลาเป็นปีต่อเดือน |
34 | PERIOD_DIFF () ส่งคืนจำนวนเดือนระหว่างช่วงเวลา |
35 | ไตรมาส () ส่งคืนไตรมาสจากอาร์กิวเมนต์วันที่ |
36 | SEC_TO_TIME () แปลงวินาทีเป็นรูปแบบ 'HH: MM: SS' |
37 | วินาที () ส่งกลับวินาที (0-59) |
38 | STR_TO_DATE () แปลงสตริงเป็นวันที่ |
39 | วันที่ () เมื่อเรียกด้วยอาร์กิวเมนต์สามตัวจะมีความหมายเหมือนกันสำหรับ DATE_SUB () |
40 | SUBTIME () ลบครั้ง |
41 | SYSDATE () ส่งคืนเวลาที่ฟังก์ชันดำเนินการ |
42 | TIME_FORMAT () จัดรูปแบบเป็นเวลา |
43 | TIME_TO_SEC () ส่งคืนอาร์กิวเมนต์ที่แปลงเป็นวินาที |
44 | เวลา() แยกส่วนเวลาของนิพจน์ที่ผ่านไป |
45 | TIMEDIFF () ลบเวลา |
46 | TIMESTAMP () ด้วยอาร์กิวเมนต์เดียวฟังก์ชันนี้จะคืนค่านิพจน์วันที่หรือวันที่และเวลา ด้วยสองอาร์กิวเมนต์ผลรวมของอาร์กิวเมนต์ |
47 | TIMESTAMPADD () เพิ่มช่วงเวลาให้กับนิพจน์วันที่และเวลา |
48 | TIMESTAMPDIFF () ลบช่วงเวลาออกจากนิพจน์วันที่และเวลา |
49 | TO_DAYS () ส่งกลับอาร์กิวเมนต์วันที่แปลงเป็นวัน |
50 | UNIX_TIMESTAMP () ส่งคืนการประทับเวลา UNIX |
51 | UTC_DATE () ส่งกลับวันที่ UTC ปัจจุบัน |
52 | UTC_TIME () ส่งคืนเวลา UTC ปัจจุบัน |
53 | UTC_TIMESTAMP () ส่งคืนวันที่และเวลา UTC ปัจจุบัน |
54 | สัปดาห์() ส่งคืนหมายเลขสัปดาห์ |
55 | วันอาทิตย์ () ส่งกลับดัชนีวันธรรมดา |
56 | WEEKOFYEAR () ส่งกลับสัปดาห์ตามปฏิทินของวันที่ (1-53) |
57 | ปี() ส่งคืนปี |
58 | ปี () ส่งคืนปีและสัปดาห์ |
ADDDATE (วันที่, INTERVAL expr unit), ADDDATE (expr, days)
เมื่อเรียกใช้ด้วยรูปแบบ INTERVAL ของอาร์กิวเมนต์ที่สอง ADDDATE () เป็นคำพ้องความหมายสำหรับ DATE_ADD () ฟังก์ชันที่เกี่ยวข้อง SUBDATE () เป็นคำพ้องความหมายของ DATE_SUB () สำหรับข้อมูลเกี่ยวกับอาร์กิวเมนต์หน่วย INTERVAL โปรดดูการอภิปรายสำหรับ DATE_ADD ()
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
เมื่อเรียกใช้ด้วยรูปแบบวันของอาร์กิวเมนต์ที่สอง MySQL จะถือว่าเป็นจำนวนเต็มของวันที่จะถูกเพิ่มใน expr
mysql> SELECT ADDDATE('1998-01-02', 31);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ADDTIME (expr1, expr2)
ADDTIME () เพิ่ม expr2 เป็น expr1 และส่งกลับผลลัพธ์ expr1 คือนิพจน์เวลาหรือวันที่และเวลาในขณะที่ expr2 เป็นนิพจน์เวลา
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') |
+---------------------------------------------------------+
| 1998-01-02 01:01:01.000001 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CONVERT_TZ (dt, from_tz, to_tz)
ค่านี้จะแปลงค่าวันที่และเวลา dt จากเขตเวลาที่กำหนดโดย from_tz เป็นเขตเวลาที่กำหนดโดย to_tz และส่งกลับค่าผลลัพธ์ ฟังก์ชันนี้จะคืนค่า NULL หากอาร์กิวเมนต์ไม่ถูกต้อง
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') |
+---------------------------------------------------------+
| 2004-01-01 13:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') |
+---------------------------------------------------------+
| 2004-01-01 22:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURDATE ()
ส่งคืนวันที่ปัจจุบันเป็นค่าในรูปแบบ "YYYY-MM-DD" หรือ YYYYMMDD ขึ้นอยู่กับว่าฟังก์ชันนั้นใช้ในสตริงหรือในบริบทที่เป็นตัวเลข
mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE() |
+---------------------------------------------------------+
| 1997-12-15 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CURDATE() + 0;
+---------------------------------------------------------+
| CURDATE() + 0 |
+---------------------------------------------------------+
| 19971215 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURRENT_DATE และ CURRENT_DATE ()
CURRENT_DATE และ CURRENT_DATE () เป็นคำพ้องความหมายสำหรับ CURDATE ()
CURTIME ()
ส่งคืนเวลาปัจจุบันเป็นค่าในรูปแบบ 'HH: MM: SS' หรือ HHMMSS ขึ้นอยู่กับว่าฟังก์ชันนั้นใช้ในสตริงหรือในบริบทที่เป็นตัวเลข ค่าจะแสดงในเขตเวลาปัจจุบัน
mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME() |
+---------------------------------------------------------+
| 23:50:26 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CURTIME() + 0;
+---------------------------------------------------------+
| CURTIME() + 0 |
+---------------------------------------------------------+
| 235026 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURRENT_TIME และ CURRENT_TIME ()
CURRENT_TIME และ CURRENT_TIME () เป็นคำพ้องความหมายของ CURTIME ()
CURRENT_TIMESTAMP และ CURRENT_TIMESTAMP ()
CURRENT_TIMESTAMP และ CURRENT_TIMESTAMP () เป็นคำพ้องความหมายของ NOW ()
วันที่ (expr)
แยกส่วนวันที่ของ expr นิพจน์วันที่หรือวันที่และเวลา
mysql> SELECT DATE('2003-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2003-12-31 01:02:03') |
+---------------------------------------------------------+
| 2003-12-31 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATEDIFF (expr1, expr2)
DATEDIFF () คืนค่า expr1 expr2 แสดงเป็นค่าเป็นวันจากวันที่หนึ่งไปอีกวันหนึ่ง ทั้ง expr1 และ expr2 เป็นนิพจน์วันที่หรือวันที่และเวลา การคำนวณจะใช้เฉพาะส่วนวันที่ของค่าเท่านั้น
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
+---------------------------------------------------------+
| DATEDIFF('1997-12-31 23:59:59','1997-12-30') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_ADD (วันที่, หน่วย INTERVAL expr), DATE_SUB (วันที่, หน่วย INTERVAL expr)
ฟังก์ชันเหล่านี้ใช้คำนวณวันที่ dateคือค่า DATETIME หรือ DATE ที่ระบุวันที่เริ่มต้น exprคือนิพจน์ที่ระบุค่าช่วงเวลาที่จะเพิ่มหรือลบออกจากวันที่เริ่มต้น expr คือสตริง อาจเริ่มต้นด้วย "-" สำหรับช่วงเวลาเชิงลบ
ก unit คือคีย์เวิร์ดที่ระบุหน่วยที่ควรตีความนิพจน์
INTERVAL คำสำคัญและตัวระบุหน่วยไม่คำนึงถึงขนาดตัวพิมพ์
ตารางต่อไปนี้แสดงรูปแบบที่คาดหวังของอาร์กิวเมนต์ expr สำหรับแต่ละค่าหน่วย
มูลค่าต่อหน่วย | คาดหวัง exprFormat |
---|---|
ไมโครวินาที | MICROSECONDS |
วินาที | วินาที |
นาที | นาที |
ชั่วโมง | ชั่วโมง |
วัน | วัน |
สัปดาห์ | สัปดาห์ |
เดือน | เดือน |
ไตรมาส | ไตรมาส |
ปี | ปี |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTES.MICROSECONDS' |
MINUTE_SECOND | 'นาที: วินาที' |
HOUR_MICROSECOND | 'HOURS.MICROSECONDS' |
HOUR_SECOND | 'HOURS: MINUTES: SECONDS' |
HOUR_MINUTE | 'HOURS: MINUTES' |
DAY_MICROSECOND | 'DAYS.MICROSECONDS' |
DAY_SECOND | 'DAYS HOURS: MINUTES: SECONDS' |
DAY_MINUTE | 'DAYS HOURS: MINUTES' |
DAY_HOUR | 'วันชั่วโมง' |
YEAR_MONTH | 'ปี - เดือน' |
ค่า QUARTER และ WEEKมีให้จาก MySQL 5.0.0 รุ่น.
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59', INTERVAL... |
+---------------------------------------------------------+
| 1998-01-01 00:01:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR) |
+---------------------------------------------------------+
| 1999-01-01 01:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_FORMAT (วันที่รูปแบบ)
คำสั่งนี้จัดรูปแบบค่าวันที่ตามสตริงรูปแบบ
อาจใช้ตัวระบุต่อไปนี้ในสตริงรูปแบบ ต้องมีอักขระ '%' ก่อนอักขระระบุรูปแบบ
ซีเนียร์ | ตัวระบุและคำอธิบาย |
---|---|
1 | %a ชื่อย่อวันธรรมดา (อา.. ส.) |
2 | %b ชื่อเดือนแบบย่อ (ม.ค. ธ.ค. ) |
3 | %c เดือนตัวเลข (0..12) |
4 | %D วันของเดือนที่มีคำต่อท้ายภาษาอังกฤษ (0, 1, 2, 3,.) |
5 | %d วันของเดือนตัวเลข (00..31) |
6 | %e วันของเดือนตัวเลข (0..31) |
7 | %f ไมโครวินาที (000000..999999) |
8 | %H ชั่วโมง (00..23) |
9 | %h ชั่วโมง (01..12) |
10 | %I ชั่วโมง (01..12) |
11 | %i นาทีตัวเลข (00..59) |
12 | %j วันเดือนปี (001..366) |
13 | %k ชั่วโมง (0..23) |
14 | %l ชั่วโมง (1..12) |
15 | %M ชื่อเดือน (มกราคม. ธันวาคม) |
16 | %m เดือนตัวเลข (00..12) |
17 | %p AM หรือ PM |
18 | %r เวลา 12 ชั่วโมง (hh: mm: ss ตามด้วย AM หรือ PM) |
19 | %S วินาที (00..59) |
20 | %s วินาที (00..59) |
21 | %T เวลา 24 ชั่วโมง (hh: mm: ss) |
22 | %U สัปดาห์ (00..53) โดยวันอาทิตย์เป็นวันแรกของสัปดาห์ |
23 | %u สัปดาห์ (00..53) โดยวันจันทร์เป็นวันแรกของสัปดาห์ |
24 | %V สัปดาห์ (01..53) โดยวันอาทิตย์เป็นวันแรกของสัปดาห์ ใช้กับ% X |
25 | %v สัปดาห์ (01..53) โดยที่วันจันทร์เป็นวันแรกของสัปดาห์ ใช้กับ% x |
26 | %W ชื่อวันธรรมดา (วันอาทิตย์.. วันเสาร์) |
27 | %w วันในสัปดาห์ (0 = วันอาทิตย์ .. 6 = วันเสาร์) |
28 | %X ปีสำหรับสัปดาห์ที่วันอาทิตย์เป็นวันแรกของสัปดาห์เป็นตัวเลขสี่หลัก ใช้กับ% V |
29 | %x ปีสำหรับสัปดาห์โดยที่วันจันทร์เป็นวันแรกของสัปดาห์เป็นตัวเลขสี่หลัก ใช้กับ% v |
30 | %Y ปีตัวเลขสี่หลัก |
31 | %y ปีตัวเลข (สองหลัก) |
32 | %% ตัวอักษร%. ตัวละคร |
33 | %x x สำหรับ any.x. ไม่ได้ระบุไว้ข้างต้น |
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') |
+---------------------------------------------------------+
| Saturday October 1997 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
-> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00....... |
+---------------------------------------------------------+
| 22 22 10 10:23:00 PM 22:23:00 00 6 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_SUB (วันที่หน่วย INTERVAL expr)
ซึ่งคล้ายกับฟังก์ชัน DATE_ADD ()
DAY (วันที่)
DAY () เป็นคำพ้องความหมายสำหรับฟังก์ชัน DAYOFMONTH ()
DAYNAME (วันที่)
ส่งคืนชื่อของวันธรรมดาสำหรับวันที่
mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05') |
+---------------------------------------------------------+
| Thursday |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFMONTH (วันที่)
ส่งคืนวันของเดือนสำหรับวันที่ในช่วง 0 ถึง 31
mysql> SELECT DAYOFMONTH('1998-02-03');
+---------------------------------------------------------+
| DAYOFMONTH('1998-02-03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFWEEK (วันที่)
ส่งกลับดัชนีวันธรรมดาสำหรับวันที่ (1 = วันอาทิตย์, 2 = วันจันทร์,., 7 = วันเสาร์) ค่าดัชนีเหล่านี้สอดคล้องกับมาตรฐาน ODBC
mysql> SELECT DAYOFWEEK('1998-02-03');
+---------------------------------------------------------+
|DAYOFWEEK('1998-02-03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFYEAR (วันที่)
ส่งคืนวันของปีสำหรับวันที่ในช่วง 1 ถึง 366
mysql> SELECT DAYOFYEAR('1998-02-03');
+---------------------------------------------------------+
| DAYOFYEAR('1998-02-03') |
+---------------------------------------------------------+
| 34 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
EXTRACT (หน่วยนับจากวันที่)
ฟังก์ชัน EXTRACT () ใช้ตัวระบุหน่วยประเภทเดียวกับ DATE_ADD () หรือ DATE_SUB () แต่แยกส่วนจากวันที่แทนที่จะใช้การคำนวณวันที่
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
+---------------------------------------------------------+
| EXTRACT(YEAR FROM '1999-07-02') |
+---------------------------------------------------------+
| 1999 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
+---------------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03') |
+---------------------------------------------------------+
| 199907 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
FROM_DAYS (N)
ระบุหมายเลขวัน N ส่งกลับค่า DATE
mysql> SELECT FROM_DAYS(729669);
+---------------------------------------------------------+
| FROM_DAYS(729669) |
+---------------------------------------------------------+
| 1997-10-07 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Note- ใช้ FROM_DAYS () ด้วยความระมัดระวังในวันที่เก่า ไม่ได้มีไว้สำหรับใช้กับค่าที่อยู่ก่อนการถือกำเนิดของปฏิทินเกรกอเรียน (1582)
FROM_UNIXTIME (unix_timestamp)
FROM_UNIXTIME (unix_timestamp รูปแบบ)
ส่งกลับการแทนค่าของ unix_timestampอาร์กิวเมนต์เป็นค่าในรูปแบบ 'YYYY-MM-DD HH: MM: SS หรือ YYYYMMDDHHMMSS ขึ้นอยู่กับว่าฟังก์ชันถูกใช้ในสตริงหรือในบริบทที่เป็นตัวเลข ค่าจะแสดงในเขตเวลาปัจจุบัน อาร์กิวเมนต์ unix_timestamp คือค่าการประทับเวลาภายในซึ่งสร้างขึ้นโดยUNIX_TIMESTAMP() ฟังก์ชัน
หากกำหนดรูปแบบผลลัพธ์จะถูกจัดรูปแบบตามสตริงรูปแบบซึ่งใช้ในลักษณะเดียวกับที่ระบุไว้ในรายการสำหรับ DATE_FORMAT() ฟังก์ชัน
mysql> SELECT FROM_UNIXTIME(875996580);
+---------------------------------------------------------+
| FROM_UNIXTIME(875996580) |
+---------------------------------------------------------+
| 1997-10-04 22:23:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
HOUR (เวลา)
ส่งคืนชั่วโมงสำหรับเวลา ช่วงของค่าส่งคืนคือ 0 ถึง 23 สำหรับค่าเวลาของวัน อย่างไรก็ตามช่วงของค่า TIME นั้นใหญ่กว่ามากดังนั้น HOUR จึงสามารถส่งคืนค่าที่มากกว่า 23 ได้
mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03') |
+---------------------------------------------------------+
| 10 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LAST_DAY (วันที่)
รับค่าวันที่หรือวันที่และเวลาและส่งกลับค่าที่สอดคล้องกันสำหรับวันสุดท้ายของเดือน ส่งคืนค่า NULL หากอาร์กิวเมนต์ไม่ถูกต้อง
mysql> SELECT LAST_DAY('2003-02-05');
+---------------------------------------------------------+
| LAST_DAY('2003-02-05') |
+---------------------------------------------------------+
| 2003-02-28 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LOCALTIME และ LOCALTIME ()
LOCALTIME และ LOCALTIME () เป็นคำพ้องความหมายของ NOW ()
LOCALTIMESTAMP และ LOCALTIMESTAMP ()
LOCALTIMESTAMP และ LOCALTIMESTAMP () เป็นคำพ้องความหมายสำหรับ NOW ()
MAKEDATE (ปีวันของปี)
ส่งกลับค่าวันที่ปีที่กำหนดและวันของปี ค่าวันของปีต้องมากกว่า 0 มิฉะนั้นผลลัพธ์จะเป็นโมฆะ
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
+---------------------------------------------------------+
| MAKEDATE(2001,31), MAKEDATE(2001,32) |
+---------------------------------------------------------+
| '2001-01-31', '2001-02-01' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MAKETIME (ชั่วโมงนาทีวินาที)
ส่งคืนค่าเวลาที่คำนวณจากอาร์กิวเมนต์ชั่วโมงนาทีและวินาที
mysql> SELECT MAKETIME(12,15,30);
+---------------------------------------------------------+
| MAKETIME(12,15,30) |
+---------------------------------------------------------+
| '12:15:30' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MICROSECOND (ประสบการณ์)
ส่งคืนไมโครวินาทีจากนิพจน์เวลาหรือวันที่และเวลา (expr) เป็นตัวเลขในช่วงตั้งแต่ 0 ถึง 999999
mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456') |
+---------------------------------------------------------+
| 123456 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MINUTE (เวลา)
ส่งคืนนาทีสำหรับเวลาในช่วง 0 ถึง 59
mysql> SELECT MINUTE('98-02-03 10:05:03');
+---------------------------------------------------------+
| MINUTE('98-02-03 10:05:03') |
+---------------------------------------------------------+
| 5 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MONTH (วันที่)
ส่งคืนเดือนสำหรับวันที่ในช่วง 0 ถึง 12
mysql> SELECT MONTH('1998-02-03')
+---------------------------------------------------------+
| MONTH('1998-02-03') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MONTHNAME (วันที่)
ส่งคืนชื่อเต็มของเดือนสำหรับวันที่
mysql> SELECT MONTHNAME('1998-02-05');
+---------------------------------------------------------+
| MONTHNAME('1998-02-05') |
+---------------------------------------------------------+
| February |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ตอนนี้ ()
ส่งคืนวันที่และเวลาปัจจุบันเป็นค่าในรูปแบบ 'YYYY-MM-DD HH: MM: SS' หรือ YYYYMMDDHHMMSS ขึ้นอยู่กับว่าฟังก์ชันนั้นใช้ในบริบทสตริงหรือตัวเลข ค่านี้แสดงในเขตเวลาปัจจุบัน
mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW() |
+---------------------------------------------------------+
| 1997-12-15 23:50:26 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
PERIOD_ADD (P, N)
เพิ่ม N เดือนในช่วงเวลา P (ในรูปแบบ YYMM หรือ YYYYMM) ส่งคืนค่าในรูปแบบ YYYYMM สังเกตว่าอาร์กิวเมนต์ P ไม่ใช่ค่าวันที่
mysql> SELECT PERIOD_ADD(9801,2);
+---------------------------------------------------------+
| PERIOD_ADD(9801,2) |
+---------------------------------------------------------+
| 199803 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
PERIOD_DIFF (P1, P2)
ส่งคืนจำนวนเดือนระหว่างช่วงเวลา P1 และ P2 ช่วงเวลาเหล่านี้ P1 และ P2 ควรอยู่ในรูปแบบ YYMM หรือ YYYYMM สังเกตว่าอาร์กิวเมนต์ช่วงเวลา P1 และ P2 ไม่ใช่ค่าวันที่
mysql> SELECT PERIOD_DIFF(9802,199703);
+---------------------------------------------------------+
| PERIOD_DIFF(9802,199703) |
+---------------------------------------------------------+
| 11 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
QUARTER (วันที่)
ส่งคืนไตรมาสของปีสำหรับวันที่ในช่วง 1 ถึง 4
mysql> SELECT QUARTER('98-04-01');
+---------------------------------------------------------+
| QUARTER('98-04-01') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ครั้งที่สอง)
ส่งคืนวินาทีสำหรับเวลาในช่วง 0 ถึง 59
mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SEC_TO_TIME (วินาที)
ส่งคืนอาร์กิวเมนต์วินาทีแปลงเป็นชั่วโมงนาทีและวินาทีเป็นค่าในรูปแบบ 'HH: MM: SS' หรือ HHMMSS ขึ้นอยู่กับว่าฟังก์ชันถูกใช้ในบริบทสตริงหรือตัวเลข
mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378) |
+---------------------------------------------------------+
| 00:39:38 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
STR_TO_DATE (str รูปแบบ)
นี่คือค่าผกผันของฟังก์ชัน DATE_FORMAT () ใช้สตริง str และรูปแบบสตริงรูปแบบ ฟังก์ชัน STR_TO_DATE () ส่งคืนค่า DATETIME หากสตริงรูปแบบมีทั้งส่วนวันที่และเวลา มิฉะนั้นจะส่งคืนค่า DATE หรือ TIME หากสตริงมีเฉพาะวันที่หรือส่วนเวลา
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
+---------------------------------------------------------+
| STR_TO_DATE('04/31/2004', '%m/%d/%Y') |
+---------------------------------------------------------+
| 2004-04-31 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBDATE (วันที่, INTERVAL expr unit) และ SUBDATE (expr, days)
เมื่อเรียกใช้ด้วยรูปแบบ INTERVAL ของอาร์กิวเมนต์ที่สอง SUBDATE () เป็นคำพ้องสำหรับ DATE_SUB () สำหรับข้อมูลเกี่ยวกับอาร์กิวเมนต์หน่วย INTERVAL โปรดดูการอภิปรายสำหรับ DATE_ADD ()
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1997-12-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1997-12-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBTIME (expr1, expr2)
ฟังก์ชัน SUBTIME () ส่งกลับ expr1 expr2 แสดงเป็นค่าในรูปแบบเดียวกับ expr1 ค่า expr1 คือนิพจน์เวลาหรือวันที่และเวลาในขณะที่ค่า expr2 เป็นนิพจน์เวลา
mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999',
-> '1 1:1:1.000002');
+---------------------------------------------------------+
| SUBTIME('1997-12-31 23:59:59.999999'... |
+---------------------------------------------------------+
| 1997-12-30 22:58:58.999997 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SYSDATE ()
ส่งคืนวันที่และเวลาปัจจุบันเป็นค่าในรูปแบบ 'YYYY-MM-DD HH: MM: SS' หรือ YYYYMMDDHHMMSS ขึ้นอยู่กับว่าฟังก์ชันนั้นถูกใช้ในสตริงหรือในบริบทที่เป็นตัวเลข
mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE() |
+---------------------------------------------------------+
| 2006-04-12 13:47:44 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME (expr)
แยกส่วนเวลาของนิพจน์เวลาหรือวันที่และเวลา expr และส่งคืนเป็นสตริง
mysql> SELECT TIME('2003-12-31 01:02:03');
+---------------------------------------------------------+
| TIME('2003-12-31 01:02:03') |
+---------------------------------------------------------+
| 01:02:03 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMEDIFF (expr1, expr2)
ฟังก์ชัน TIMEDIFF () จะคืนค่า expr1 expr2 แสดงเป็นค่าเวลา ค่า expr1 และ expr2 เหล่านี้เป็นนิพจน์เวลาหรือวันที่และเวลา แต่ทั้งสองค่าจะต้องเป็นประเภทเดียวกัน
mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
-> '1997-12-30 01:01:01.000002');
+---------------------------------------------------------+
| TIMEDIFF('1997-12-31 23:59:59.000001'..... |
+---------------------------------------------------------+
| 46:58:57.999999 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMP (expr), TIMESTAMP (expr1, expr2)
ด้วยอาร์กิวเมนต์เดียวฟังก์ชันนี้จะคืนค่า expr นิพจน์วันที่หรือวันที่และเวลาเป็นค่าวันที่และเวลา ด้วยอาร์กิวเมนต์สองรายการจะเพิ่มนิพจน์เวลา expr2 ให้กับนิพจน์วันที่หรือวันที่และเวลาexpr1 และส่งคืนผลลัพธ์เป็นค่าวันที่และเวลา
mysql> SELECT TIMESTAMP('2003-12-31');
+---------------------------------------------------------+
| TIMESTAMP('2003-12-31') |
+---------------------------------------------------------+
| 2003-12-31 00:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMPADD (หน่วยช่วงเวลา datetime_expr)
ฟังก์ชันนี้จะเพิ่มช่วงเวลานิพจน์จำนวนเต็มให้กับนิพจน์วันที่หรือวันที่และเวลา datetime_expr. หน่วยสำหรับช่วงเวลาถูกกำหนดโดยอาร์กิวเมนต์หน่วยซึ่งควรเป็นค่าใดค่าหนึ่งต่อไปนี้ -
- FRAC_SECOND
- วินาทีนาที
- HOUR, DAY
- WEEK
- MONTH
- QUARTER หรือ
- YEAR
ค่าหน่วยอาจถูกระบุโดยใช้หนึ่งในคีย์เวิร์ดดังที่แสดงหรือโดยใช้คำนำหน้า SQL_TSI_
ตัวอย่างเช่น DAY และ SQL_TSI_DAY ถูกกฎหมาย
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2003-01-02') |
+---------------------------------------------------------+
| 2003-01-02 00:01:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMPDIFF (หน่วย, datetime_expr1, datetime_expr2)
ส่งกลับความแตกต่างของจำนวนเต็มระหว่างนิพจน์วันที่หรือวันที่และเวลา datetime_expr1 และ datetime_expr2 หน่วยสำหรับผลลัพธ์ถูกกำหนดโดยอาร์กิวเมนต์หน่วย ค่าทางกฎหมายสำหรับหน่วยจะเหมือนกับที่ระบุไว้ในคำอธิบายของฟังก์ชัน TIMESTAMPADD ()
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
+---------------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME_FORMAT (เวลารูปแบบ)
ฟังก์ชันนี้ใช้เหมือนกับฟังก์ชัน DATE_FORMAT () แต่สตริงรูปแบบอาจมีตัวระบุรูปแบบสำหรับชั่วโมงนาทีและวินาทีเท่านั้น
ถ้าค่าเวลามีส่วนของชั่วโมงที่มากกว่า 23%H และ%k ตัวระบุรูปแบบชั่วโมงสร้างค่าที่มากกว่าช่วงปกติคือ 0 ถึง 23 ตัวระบุรูปแบบชั่วโมงอื่น ๆ จะสร้างค่าโมดูโล 12
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l') |
+---------------------------------------------------------+
| 100 100 04 04 4 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME_TO_SEC (เวลา)
ส่งกลับอาร์กิวเมนต์เวลาที่แปลงเป็นวินาที
mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00') |
+---------------------------------------------------------+
| 80580 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
วันนี้วันที่)
ระบุวันที่ส่งกลับหมายเลขวัน (จำนวนวันตั้งแต่ปี 0)
mysql> SELECT TO_DAYS(950501);
+---------------------------------------------------------+
| TO_DAYS(950501) |
+---------------------------------------------------------+
| 728779 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UNIX_TIMESTAMP (), UNIX_TIMESTAMP (วันที่)
หากเรียกโดยไม่มีอาร์กิวเมนต์ฟังก์ชันนี้จะส่งคืนการประทับเวลา Unix (วินาทีตั้งแต่ '1970-01-01 00:00:00' UTC) เป็นจำนวนเต็มที่ไม่ได้ลงชื่อ ถ้า UNIX_TIMESTAMP () ถูกเรียกด้วยอาร์กิวเมนต์วันที่จะส่งคืนค่าของอาร์กิวเมนต์เป็นวินาทีตั้งแต่ '1970-01-01 00:00:00' UTC วันที่อาจเป็นสตริง DATE สตริง DATETIME TIMESTAMP หรือตัวเลขในรูปแบบ YYMMDD หรือ YYYYMMDD
mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP() |
+---------------------------------------------------------+
| 882226357 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00') |
+---------------------------------------------------------+
| 875996580 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_DATE, UTC_DATE ()
ส่งคืนวันที่ UTC ปัจจุบันเป็นค่าในรูปแบบ 'YYYY-MM-DD' หรือ YYYYMMDD ขึ้นอยู่กับว่าฟังก์ชันถูกใช้ในบริบทสตริงหรือตัวเลข
mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE(), UTC_DATE() + 0 |
+---------------------------------------------------------+
| 2003-08-14, 20030814 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_TIME, UTC_TIME ()
ส่งคืนเวลา UTC ปัจจุบันเป็นค่าในรูปแบบ 'HH: MM: SS' หรือ HHMMSS ขึ้นอยู่กับว่าฟังก์ชันถูกใช้ในบริบทสตริงหรือตัวเลข
mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME(), UTC_TIME() + 0 |
+---------------------------------------------------------+
| 18:07:53, 180753 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_TIMESTAMP, UTC_TIMESTAMP ()
ส่งคืนวันที่และเวลา UTC ปัจจุบันเป็นค่าใน 'YYYY-MM-DD HH: MM: SS' หรือในรูปแบบ YYYYMMDDHHMMSS ขึ้นอยู่กับว่าฟังก์ชันถูกใช้ในสตริงหรือในบริบทที่เป็นตัวเลข
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0 |
+---------------------------------------------------------+
| 2003-08-14 18:08:04, 20030814180804 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
สัปดาห์ (วันที่ [โหมด])
ฟังก์ชันนี้ส่งคืนหมายเลขสัปดาห์สำหรับวันที่ รูปแบบสองอาร์กิวเมนต์ของ WEEK () ช่วยให้คุณสามารถระบุได้ว่าสัปดาห์จะเริ่มในวันอาทิตย์หรือวันจันทร์และค่าที่ส่งคืนควรอยู่ในช่วง 0 ถึง 53 หรือตั้งแต่ 1 ถึง 53 หากไม่ระบุอาร์กิวเมนต์โหมด ค่าของตัวแปรระบบ default_week_format ถูกใช้
โหมด | วันแรกของสัปดาห์ | พิสัย | สัปดาห์ที่ 1 เป็นสัปดาห์แรก |
---|---|---|---|
0 | วันอาทิตย์ | 0-53 | กับวันอาทิตย์ในปีนี้ |
1 | วันจันทร์ | 0-53 | มากกว่า 3 วันในปีนี้ |
2 | วันอาทิตย์ | 1-53 | กับวันอาทิตย์ในปีนี้ |
3 | วันจันทร์ | 1-53 | มากกว่า 3 วันในปีนี้ |
4 | วันอาทิตย์ | 0-53 | มากกว่า 3 วันในปีนี้ |
5 | วันจันทร์ | 0-53 | กับวันจันทร์ในปีนี้ |
6 | วันอาทิตย์ | 1-53 | มากกว่า 3 วันในปีนี้ |
7 | วันจันทร์ | 1-53 | กับวันจันทร์ในปีนี้ |
mysql> SELECT WEEK('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20') |
+---------------------------------------------------------+
| 7 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
WEEKDAY (วันที่)
ส่งกลับดัชนีวันธรรมดาสำหรับวันที่ (0 = วันจันทร์, 1 = วันอังคาร, 6 = วันอาทิตย์)
mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
+---------------------------------------------------------+
| WEEKDAY('1998-02-03 22:23:00') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
WEEKOFYEAR (วันที่)
ส่งคืนสัปดาห์ตามปฏิทินของวันที่เป็นตัวเลขในช่วง 1 ถึง 53 WEEKOFYEAR () เป็นฟังก์ชันที่เข้ากันได้ซึ่งเทียบเท่ากับ WEEK (วันที่ 3)
mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20') |
+---------------------------------------------------------+
| 8 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
YEAR (วันที่)
ส่งคืนปีสำหรับวันที่ในช่วง 1000 ถึง 9999 หรือ 0 สำหรับ. ศูนย์ วันที่.
mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03') |
+---------------------------------------------------------+
| 1998 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
YEARWEEK (วันที่), YEARWEEK (วันที่, โหมด)
ส่งคืนปีและสัปดาห์สำหรับวันที่ อาร์กิวเมนต์โหมดทำงานเหมือนกับอาร์กิวเมนต์โหมดของฟังก์ชัน WEEK () ปีในผลลัพธ์อาจแตกต่างจากปีในอาร์กิวเมนต์วันที่สำหรับสัปดาห์แรกและสัปดาห์สุดท้ายของปี
mysql> SELECT YEARWEEK('1987-01-01');
+---------------------------------------------------------+
| YEAR('98-02-03')YEARWEEK('1987-01-01') |
+---------------------------------------------------------+
| 198653 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Note - จำนวนสัปดาห์แตกต่างจากที่ฟังก์ชัน WEEK () จะส่งกลับ (0) สำหรับอาร์กิวเมนต์ที่เป็นทางเลือก 0 หรือ 1 เนื่องจาก WEEK () จะส่งกลับสัปดาห์ในบริบทของปีที่กำหนด