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