Cara Bekerja Berkesan Dengan Tarikh dan Masa di MySQL

Cara Bekerja Berkesan Dengan Tarikh dan Masa di MySQL

Tarikh dan waktu adalah penting, ia membantu memastikan segala sesuatu tetap teratur, dan merupakan aspek yang tidak terpisahkan dari sebarang operasi perisian.





Bekerja dengan berkesan dalam pangkalan data kadang-kadang kelihatan membingungkan, sama ada berfungsi di pelbagai zon waktu, menambah / mengurangkan tarikh, dan operasi lain.





Ketahui pelbagai fungsi MySQL yang tersedia untuk mengendalikan dan menguruskan tarikh / masa dengan mudah dalam pangkalan data anda.





Bekerja Dengan Zon Waktu

Untuk memastikan perkara menjadi standard, anda hanya perlu bekerja dengan tarikh / masa di zon waktu UTC. Setiap kali anda membuat sambungan ke pangkalan data MySQL, anda harus menukar zon waktu ke UTC, yang dapat dilakukan dengan pernyataan SQL berikut:

SET TIME_ZONE = '+0:00'

Oleh kerana semua tarikh sekarang akan disimpan di UTC, anda selalu tahu apa yang anda bekerjasama, menjadikan perkara lebih mudah dan lurus ke hadapan.



bantu saya mencari filem untuk ditonton

Sekiranya perlu anda boleh dengan mudah menukar zon waktu dari sebarang nilai masa / cap waktu dengan yang berguna CONVERT_TZ () Fungsi MySQL. Anda perlu mengetahui ofsetnya terlebih dahulu, misalnya, PST di pantai barat Amerika Utara adalah UTC -08: 00, jadi anda boleh menggunakan:

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

Ini menghasilkan 2021-02-04 13:47:23 yang betul betul. Ketiga-tiga hujah tersebut diteruskan CONVERT_TZ () pertama kali cap waktu / cap waktu yang anda mulakan (gunakan sekarang () untuk masa sekarang), yang kedua akan selalu ada '+0: 00' kerana semua tarikh dipaksa ke UTC dalam pangkalan data, dan yang terakhir adalah ofset kami ingin menukar tarikh menjadi.





Tambah / Kurangkan Tarikh

Banyak kali anda perlu menambah atau mengurangkan tarikh, seperti jika anda perlu mengambil rekod dari seminggu yang lalu, atau menjadualkan sesuatu sebulan dari sekarang.

Syukurlah MySQL mempunyai yang terbaik TARIKH_ADD () dan DATE_SUB () fungsi menjadikan tugas ini sangat mudah. Sebagai contoh, anda boleh mengurangkan dua minggu dari tarikh semasa dengan penyataan SQL:





SELECT DATE_SUB(now(), interval 2 week);

Sekiranya anda ingin menambahkan tiga hari pada cap waktu yang ada, anda akan menggunakan:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

Kedua fungsi berfungsi sama, argumen pertama adalah cap waktu yang anda mulakan, dan argumen kedua adalah selang untuk menambah atau mengurangkan. Argumen kedua selalu diformat sama bermula dengan kata selang diikuti oleh nilai numerik dan selang itu sendiri, yang boleh menjadi salah satu daripada yang berikut: kedua, minit, jam, hari, minggu, bulan, suku, tahun.

Sebagai contoh lain, jika anda ingin mengambil semua log masuk yang berlaku dalam 34 minit terakhir, anda boleh menggunakan pernyataan SQL seperti:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Seperti yang anda lihat, ini akan mengambil semua rekod dari log masuk jadual dengan tarikh log masuk lebih besar daripada masa semasa tolak 45 minit, atau dengan kata lain, 45 minit terakhir.

Dapatkan Perbezaan Antara Tarikh

Kadang-kadang anda perlu mendapatkan berapa banyak masa yang berlalu antara dua tarikh. Anda dapat memperoleh jumlah hari antara dua tarikh yang berbeza dengan DATEDIFF fungsi, seperti pernyataan SQL di bawah:

SELECT DATEDIFF(now(), '2020-12-15');

The DATEDIFF fungsi mengambil dua argumen, kedua-duanya adalah cap tarikh / masa dan memberikan bilangan hari di antara mereka. Contoh di atas akan menunjukkan jumlah hari yang berlalu dari 15 Disember 2020 hingga hari ini.

Untuk mendapatkan bilangan detik antara dua tarikh, the TO_SECONDS () fungsi boleh berguna, contohnya:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

Ini akan menghasilkan jumlah detik antara dua tarikh yang disediakan.

Ekstrak Segmen Dari Tarikh

Terdapat pelbagai fungsi MySQL yang membolehkan anda mengekstrak segmen tertentu dari tarikh dengan mudah, seperti jika anda hanya menginginkan bulan, hari dalam setahun, atau jam. Berikut adalah beberapa contoh fungsi tersebut:

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

Penyataan SQL di atas akan menghasilkan 02 , jam semasa, dan 196 kerana 15 September adalah hari ke-196 tahun ini. Berikut adalah senarai semua fungsi pengekstrakan tarikh yang tersedia, masing-masing hanya mengambil satu argumen, tarikhnya diekstrak dari:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

Sebagai contoh, jika mungkin anda hanya ingin mendapatkan bulan dan tahun yang dibuat oleh semua pengguna, anda boleh menggunakan penyataan SQL seperti:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

Ini akan mengambil semua rekod dalam pengguna jadual dan tunjukkan id #, bulan dan tahun setiap pengguna dibuat.

Mengumpulkan Rekod mengikut Tempoh Tarikh

Salah satu penggunaan fungsi tarikh yang sangat baik adalah kemampuan untuk mengumpulkan catatan mengikut penggunaan tarikh tarikh KUMPULAN OLEH dalam penyataan SQL anda. Sebagai contoh, mungkin anda ingin menarik jumlah keseluruhan pesanan pada tahun 2020 yang dikumpulkan mengikut bulan. Anda boleh menggunakan pernyataan SQL seperti:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

Ini akan mengambil semua pesanan yang dibuat pada tahun 2020, mengelompokkannya pada bulan yang dibuat, dan mengembalikan 12 rekod yang menunjukkan jumlah pesanan yang dipesan setiap bulan dalam setahun.

Harap maklum, untuk prestasi indeks yang lebih baik, sebaiknya jangan menggunakan fungsi tarikh seperti TAHUN () dalam klausa WHERE pernyataan SQL, dan sebaliknya gunakan ANTARA pengendali seperti yang ditunjukkan dalam contoh di atas.

Jangan Pernah Keliru Dengan Kurma Lagi

Dengan menggunakan pengetahuan di atas, anda kini dapat bekerja dengan berkesan, menterjemahkan dan melakukan operasi pada tarikh dan masa dalam pelbagai kes penggunaan.

Ingatlah untuk selalu menggunakan UTC ketika bekerja dengan tarikh untuk kesederhanaan, dan gunakan petua di atas untuk menguruskan tarikh dengan berkesan dalam perisian anda, sama ada untuk menyelesaikan pengiraan mudah atau menarik laporan dengan mudah dikumpulkan mengikut tempoh tarikh.

Sekiranya anda agak baru dalam SQL, pastikan untuk melihatnya arahan SQL penting untuk membantu meningkatkan penggunaan SQL anda.

Berkongsi Berkongsi Tweet E-mel Cara Membuat Laporan dan Dokumen Profesional dalam Microsoft Word

Panduan ini meneliti unsur-unsur laporan profesional dan mengkaji penataan, penggayaan, dan penyelesaian dokumen anda dalam Microsoft Word.

Baca Seterusnya
Topik-topik yang berkaitan Mengenai Pengarang Matt Dizak(18 Artikel Diterbitkan) Lagi Dari Matt Dizak

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan