3.1 Senarai fungsi untuk bekerja dengan tarikh dan masa

Tarikh dan masa adalah salah satu jenis data yang paling biasa disimpan dalam pangkalan data. Itulah sebabnya senarai fungsi untuk bekerja dengan mereka sangat besar. Berikut adalah yang paling popular:

# Fungsi Penerangan
1 CURDATE() Mengembalikan tarikh semasa
2 CURTIME() Mengembalikan masa semasa
3 SEKARANG(), LOCALTIME() Mengembalikan tarikh semasa dan masa semasa
4 TAHUN() Mengembalikan tahun dari tarikh
5 BULAN() Mengembalikan bulan dari tarikh
6 DAY(), DAYOFMONTH() Mengembalikan hari dari tarikh
7 JAM() Mengembalikan hanya beberapa jam dari masa
8 MINIT() Mengumumkan minit dari masa
9 KEDUA() Mengembalikan saat dari masa
10 DAYNAME() Mengembalikan nama hari dalam seminggu: Isnin, ...
sebelas MONTHNAME() Mengembalikan nama bulan: Januari, ...
12 MINGGU() Mengembalikan minggu dari tarikh
13 HARI MINGGU() Mengembalikan nombor hari dalam seminggu: Isnin - 0, Selasa - 1
14 WEEKOFYEAR() Mengembalikan nombor minggu dalam setahun
15 HARI DALAM SEMINGGU() Mengembalikan nombor hari dalam seminggu: Ahad - 1, Isnin - 2
16 DAYOFYEAR() Mengembalikan hari dalam setahun: 1-366
17 TARIKH() Mengembalikan tarikh sahaja daripada objek "datetime".
18 ADDDATE() Menambahkan hari pada tarikh
19 SUBDATE() Menolak hari daripada tarikh
20 ADDTIME() Menambah masa ke masa
21 SUBTIME() Menolak masa dari masa

Saya sengaja mengumpulkan fungsi ke dalam kumpulan kecil untuk memudahkan anda memahami cara bekerja dengannya. Di bawah ini kita akan mempertimbangkan satu fungsi daripada setiap kumpulan.

Anda boleh mendapatkan senarai lengkap fungsi untuk bekerja dengan tarikh dan masa di pautan: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

3.2 Fungsi panggilan

Ngomong-ngomong, memandangkan kita sedang mempelajari begitu banyak fungsi, saya fikir adalah berguna untuk menyebut bahawa pengendali SELECTtidak perlu digunakan dengan FROM. Ia boleh mengembalikan nilai sebarang ungkapan. Pandangan umum yang diberikan oleh templat:

SELECT expression

Dan jika anda ingin memanggil beberapa fungsi, maka anda perlu menulis kod seperti:

SELECT function(options)

Di bawah saya akan memberikan beberapa contoh operasi pengendali SELECTtanpa menggunakan jadual:

# Permintaan Hasilnya
1 PILIH 1+1 2
2 PILIH 13 MOD 5 3
3 PILIH RAND() 0.20771444235715497
4 PILIH CURDATE() 2022-06-04
5 PILIH MASA() 00:06:02
6 PILIH SEKARANG() 04-06-2022 00:06:43

Dan, seperti yang anda lihat, dalam jadual di atas, untuk mendapatkan tarikh dan masa semasa, anda hanya perlu menggunakan salah satu fungsi:

  • CURDATE()- tarikh semasa;
  • CURTIME()– masa semasa;
  • NOW()– tarikh dan masa semasa.

3.3 Mengumpul data mengikut tahun dan bulan

Mari kita ingat jadual tugas kita dengan tugas untuk pekerja. Mari cuba kumpulkan tugasan daripada jadual ini mengikut tahun. Untuk melakukan ini, kami menggunakan fungsi YEAR(), yang mengembalikan tahun dari tarikh yang diluluskan kepadanya.

Versi pertama pertanyaan kami akan kelihatan seperti ini:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    deadline
FROM task

Hasil daripada pertanyaan ini ialah:

ID ID pekerja nama tahun tarikh akhir
1 1 Betulkan pepijat pada bahagian hadapan 2022 2022-06-01
2 2 Betulkan pepijat pada bahagian belakang 2022 15-06-2022
3 5 Beli kopi 2022 2022-07-01
4 5 Beli kopi 2022 2022-08-01
5 5 Beli kopi 2022 2022-09-01
6 (NULL) Bersihkan pejabat (NULL) (NULL)
7 4 Nikmati kehidupan (NULL) (NULL)
8 6 Nikmati kehidupan (NULL) (NULL)

Kita dapat melihat bahawa semua baris mempunyai tahun yang sama, jadi mari kita gunakan dua medan - tahun dan bulan. Versi kedua pertanyaan kami akan kelihatan seperti ini:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    MONTH(deadline) AS month,
    deadline
FROM task

Hasil daripada pertanyaan ini ialah:

ID ID pekerja nama tahun bulan tarikh akhir
1 1 Betulkan pepijat pada bahagian hadapan 2022 6 2022-06-01
2 2 Betulkan pepijat pada bahagian belakang 2022 6 15-06-2022
3 5 Beli kopi 2022 7 2022-07-01
4 5 Beli kopi 2022 8 2022-08-01
5 5 Beli kopi 2022 9 2022-09-01
6 (NULL) Bersihkan pejabat (NULL) (NULL) (NULL)
7 4 Nikmati kehidupan (NULL) (NULL) (NULL)
8 6 Nikmati kehidupan (NULL) (NULL) (NULL)

Saya tidak akan memberitahu anda cara mengumpulkan tugas mengikut tahun dan bulan - anda sudah mempelajari ini: gunakan operator GROUP BY.