3.1 รายการฟังก์ชั่นสำหรับการทำงานกับวันที่และเวลา
วันที่และเวลาเป็นหนึ่งในประเภทข้อมูลที่จัดเก็บในฐานข้อมูลที่พบมากที่สุด นั่นคือเหตุผลที่รายการฟังก์ชั่นสำหรับการทำงานกับพวกมันมีขนาดใหญ่มาก นี่คือรายการยอดนิยม:
# | การทำงาน | คำอธิบาย |
---|---|---|
1 | เคอร์เดต() | ส่งกลับวันที่ปัจจุบัน |
2 | เคอร์ไทม์() | ส่งกลับเวลาปัจจุบัน |
3 | ตอนนี้ (), เวลาท้องถิ่น () | ส่งกลับวันที่ปัจจุบันและเวลาปัจจุบัน |
4 | ปี() | ส่งกลับปีจากวันที่ |
5 | เดือน() | ส่งกลับเดือนจากวันที่ |
6 | DAY(), DAYOFMONTH() | ส่งกลับวันจากวันที่ |
7 | ชั่วโมง() | ส่งกลับเพียงชั่วโมงจากเวลา |
8 | นาที() | ประกาศนาทีจากเวลา |
9 | ที่สอง() | ส่งกลับวินาทีจากเวลา |
10 | ชื่อวัน() | ส่งกลับชื่อวันในสัปดาห์: Monday, ... |
สิบเอ็ด | ชื่อเดือน() | ส่งกลับชื่อเดือน: มกราคม, ... |
12 | สัปดาห์() | ส่งกลับสัปดาห์จากวันที่ |
13 | วันธรรมดา() | ส่งกลับจำนวนวันในสัปดาห์: Monday - 0, Tuesday - 1 |
14 | สัปดาห์ที่() | ส่งกลับหมายเลขสัปดาห์ของปี |
15 | DAYOFWEEK() | ส่งกลับจำนวนวันในสัปดาห์: อาทิตย์ - 1, จันทร์ - 2 |
16 | เดย์ออฟเยียร์() | ส่งกลับวันของปี: 1-366 |
17 | วันที่() | ส่งกลับเฉพาะวันที่จากวัตถุ "วันที่และเวลา" |
18 | เพิ่มวันที่() | เพิ่มวันในวันที่ |
19 | ย่อย () | ลบวันออกจากวันที่ |
20 | เพิ่มเวลา() | เพิ่มเวลา |
21 | เวลาย่อย() | ลบเวลาออกจากเวลา |
ฉันตั้งใจจัดกลุ่มฟังก์ชันออกเป็นกลุ่มเล็กๆ เพื่อให้เข้าใจวิธีการทำงานกับฟังก์ชันเหล่านั้นได้ง่ายขึ้น ด้านล่างเราจะพิจารณาหนึ่งฟังก์ชันจากแต่ละกลุ่ม
คุณสามารถดูรายการฟังก์ชันทั้งหมดสำหรับการทำงานกับวันที่และเวลาได้ที่ลิงก์: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 ฟังก์ชั่นการโทร
อย่างไรก็ตาม เนื่องจากเรากำลังเรียนรู้ฟังก์ชันต่างๆ มากมาย ฉันคิดว่ามันเป็นประโยชน์ที่จะกล่าวถึงว่าตัวดำเนินการSELECT
ไม่จำเป็นต้องใช้FROM
กับ มันสามารถคืนค่าของนิพจน์ใดๆ มุมมองทั่วไปที่กำหนดโดยแม่แบบ:
SELECT expression
และถ้าคุณต้องการเรียกใช้ฟังก์ชันบางอย่าง คุณต้องเขียนโค้ดดังนี้
SELECT function(options)
ด้านล่างนี้ฉันจะให้ตัวอย่างการทำงานของตัวดำเนินการSELECT
โดยไม่ต้องขอความช่วยเหลือจากตาราง:
# | ขอ | ผลลัพธ์ |
---|---|---|
1 | เลือก 1+1 | 2 |
2 | เลือก 13 MOD 5 | 3 |
3 | เลือกแรนด์() | 0.20771444235715497 |
4 | เลือกเคอร์เดต() | 2022-06-04 |
5 | เลือกเคอร์ไทม์() | 00:06:02 |
6 | เลือกทันที() | 2022-06-04 00:06:43 |
และอย่างที่คุณเห็นในตารางด้านบน ในการรับวันที่และเวลาปัจจุบัน คุณเพียงแค่ต้องใช้ฟังก์ชันอย่างใดอย่างหนึ่ง:
CURDATE()
- วันที่ปัจจุบัน;CURTIME()
– เวลาปัจจุบันNOW()
- วันที่และเวลาปัจจุบัน
3.3 การจัดกลุ่มข้อมูลตามปีและเดือน
จำตารางงานของเราพร้อมงานสำหรับพนักงาน ลองจัดกลุ่มงานจากตารางนี้ตามปี ในการทำเช่นนี้ เราใช้ฟังก์ชันYEAR()
ซึ่งจะส่งคืนปีนับจากวันที่ผ่านไป
แบบสอบถามรุ่นแรกของเราจะมีลักษณะดังนี้:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
ผลลัพธ์ของแบบสอบถามนี้จะเป็น:
รหัส | รหัสพนักงาน | ชื่อ | ปี | วันกำหนดส่ง |
---|---|---|---|---|
1 | 1 | แก้ไขข้อบกพร่องในส่วนหน้า | 2022 | 2022-06-01 |
2 | 2 | แก้ไขข้อบกพร่องในส่วนหลัง | 2022 | 2022-06-15 |
3 | 5 | ซื้อกาแฟ | 2022 | 2022-07-01 |
4 | 5 | ซื้อกาแฟ | 2022 | 2022-08-01 |
5 | 5 | ซื้อกาแฟ | 2022 | 2022-09-01 |
6 | (โมฆะ) | ทำความสะอาดสำนักงาน | (โมฆะ) | (โมฆะ) |
7 | 4 | ใช้ชีวิตให้สนุก | (โมฆะ) | (โมฆะ) |
8 | 6 | ใช้ชีวิตให้สนุก | (โมฆะ) | (โมฆะ) |
เราจะเห็นว่าทุกแถวมีปีเดียวกัน ดังนั้นให้ใช้สองฟิลด์ - ปีและเดือน แบบสอบถามรุ่นที่สองของเราจะมีลักษณะดังนี้:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
ผลลัพธ์ของแบบสอบถามนี้จะเป็น:
รหัส | รหัสพนักงาน | ชื่อ | ปี | เดือน | วันกำหนดส่ง |
---|---|---|---|---|---|
1 | 1 | แก้ไขข้อบกพร่องในส่วนหน้า | 2022 | 6 | 2022-06-01 |
2 | 2 | แก้ไขข้อบกพร่องในส่วนหลัง | 2022 | 6 | 2022-06-15 |
3 | 5 | ซื้อกาแฟ | 2022 | 7 | 2022-07-01 |
4 | 5 | ซื้อกาแฟ | 2022 | 8 | 2022-08-01 |
5 | 5 | ซื้อกาแฟ | 2022 | 9 | 2022-09-01 |
6 | (โมฆะ) | ทำความสะอาดสำนักงาน | (โมฆะ) | (โมฆะ) | (โมฆะ) |
7 | 4 | ใช้ชีวิตให้สนุก | (โมฆะ) | (โมฆะ) | (โมฆะ) |
8 | 6 | ใช้ชีวิตให้สนุก | (โมฆะ) | (โมฆะ) | (โมฆะ) |
ฉันจะไม่บอกวิธีจัดกลุ่มงานตามปีและเดือน - คุณได้ศึกษาสิ่งนี้แล้ว: ใช้ตัวดำเนินGROUP BY
การ
GO TO FULL VERSION