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การ