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 SELECT
tidak 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 SELECT
tanpa 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
.