Kami telah mengurangi tiga hari dari tanggal yang diberikan dengan menggunakan fungsi DATE_SUB[]. Di tempat DAY kita bisa menggunakan Month, year, hour, minute, second etc , berikut adalah daftarnya
unit ValueExpected expr FormatExampleDAYDAYSDATE_SUB[ '2016-11-29', INTERVAL 10 DAY ]MONTHMONTHSDATE_SUB[ '2015-11-20', INTERVAL 5 MONTH ]WEEKWEEKSDATE_SUB[ '2016-08-20', INTERVAL 5 WEEK ]QUARTERQUARTERSDATE_SUB[ '2016SELECT DATE_SUB[ '2016-02-23', INTERVAL 2 YEAR ]; // 2014-02-23
SELECT DATE_SUB[ CURDATE[], INTERVAL 2 YEAR ]; // 2018-02-23
Permintaan kedua bergantung pada tanggal hari ini, sehingga hasil Anda akan berbedaTerkadang kita harus mengumpulkan data 7 atau 15 hari terakhir atau X hari [atau bulan, tahun atau minggu] dari tabel MySQL
Video Tutorial tentang Kueri Tanggal menggunakan CURDATE, BETWEEN , YEAR, MONTH, DAYOFWEEK[]
Misalnya, mari kita cari tahu siapa anggota baru yang bergabung di forum kita minggu lalu. Satu toko mungkin tertarik untuk mengetahui produk baru yang ditambahkan dalam satu bulan terakhir. Buku apa yang tiba dalam satu tahun terakhir. Di sini, terlepas dari nilai tanggal, kami menginginkan catatan hari X terakhir dari hari ini, atau kami dapat mengatakan bahwa catatan antara hari ini dan hari X terakhir [bulan, tahun, atau minggu] diperlukan
Kami akan menggunakan fungsi MySQL CURDATE[] untuk mendapatkan tanggal hari ini
Untuk mengetahui perbedaan tanggal hari ini dan hari atau bulan sebelumnya kita harus menggunakan fungsi MySQL DATE_SUB
DATE_SUB adalah fungsi MySQL yang menggunakan ekspresi tanggal, interval, dan konstanta untuk mengembalikan nilai tanggal untuk perhitungan lebih lanjut
Fungsi strtotime di PHP sangat kuat tetapi sangat kurang dimanfaatkan - terutama karena beberapa aspek bisa sedikit membingungkan dan orang lebih percaya diri 'melakukan hal-hal dengan cara yang sulit'. Fungsi strtotime tidak hanya mengonversi string tanggal menjadi nilai stempel waktu tetapi juga memiliki 'bahasa' sendiri untuk memungkinkan Anda menentukan tanggal atau waktu apa pun yang Anda inginkan
Menghitung tanggal untuk hari-hari yang lalu dan yang akan datang
Perhitungan termudah dan paling umum didasarkan pada detik, menit, jam, dan hari. Bulan dan tahun juga merupakan input yang valid tetapi tidak selalu berguna dalam perhitungan karena panjangnya tidak sama karena cara kerja kalender kita
Di bawah ini adalah hasil dari berbagai string yang diteruskan ke strtotime dan diubah menjadi string tanggal
Sebagai contoh
echo date['l jS F [Y-m-d]', strtotime['-3 days']];
_3 hari yang laluSabtu 14 Januari [14-01-2023]-3 hariSabtu 14 Januari [14-01-2023]-2 hariMinggu 15 Januari [15-01-2023]kemarinSenin 16 Januari [16-01-2023]sekarangSelasa 17 Januari [ Seperti biasa sering ada cara berbeda untuk mencapai hasil yang sama. Pada daftar di atas Anda dapat melihat bahwa '3 hari yang lalu' setara dengan '-3 hari'. Juga 'kemarin' sama dengan '-1 hari' atau '1 hari yang lalu'. Tanda 's' di akhir 'hari', 'tahun' atau pengukuran lainnya dapat dihilangkan jika Anda mau
Nilai input 'sekarang' dan 'hari ini' dalam daftar di atas tidak berguna seolah-olah kita mengabaikan paramater kedua dari fungsi tanggal, itu tetap akan default ke waktu saat ini
Bekerja dengan hari dalam seminggu
Terkadang kita bekerja dengan hari dalam seminggu dan perlu mengetahui kejadian terakhir/berikutnya, misalnya hari Sabtu
-2 minggu SabtuSabtu 7 Januari [2023-01-07]Sabtu laluSabtu 14 Januari [2023-01-14]SabtuSabtu 21 Januari [21-01-2021]Sabtu iniSabtu 21 Januari [21-01-2023]Sabtu pertamaSabtu 21 Januari [Dalam daftar di atas kita dapat melihat bahwa 'Sabtu', 'Sabtu ini' dan 'Sabtu pertama' semuanya setara. Kata kunci 'ini' dan 'pertama' hanya digunakan untuk meningkatkan keterbacaan
Sekarang agak rumit untuk dijelaskan. Berikut ini muncul di situs web PHP
Dalam PHP 5 hingga 5. 0. 2, "sekarang" dan waktu relatif lainnya salah dihitung dari tengah malam hari ini. Ini berbeda dari versi lain yang dihitung dengan benar dari waktu saat ini
Selain itu, mereka telah memperkenalkan 'kedua' seperti pada 'Sabtu kedua' dan tampaknya telah mengubah arti 'berikutnya' menjadi sama dengan 'pertama'. Terakhir, nilai kembalian pada kegagalan sekarang adalah FALSE, bukan -1. Perubahan terakhir ini yang paling mungkin menyebabkan masalah pada aplikasi lawas
Tabel di bawah menunjukkan bagaimana output telah berubah
PHP versi lama. PHP5. 0. 2 dan lebih tinggi- Sabtu lalu
- Sabtu ini atau Sabtu pertama
- Sabtu depan
- Sabtu ketiga
- Sabtu keempat
- Sabtu lalu
- Sabtu ini atau Sabtu pertama atau Sabtu depan
- Sabtu kedua
- Sabtu ketiga
- Sabtu keempat
Menggunakan offset untuk mendapatkan hari yang tepat
Masalah lainnya adalah ketika Anda ingin menemukan kejadian sebelumnya atau berikutnya dari hari tertentu dalam seminggu. Misalnya, hari ini adalah hari Selasa kita dapat menjalankan yang berikut ini
Selasa laluSelasa 10 Januari [10-01-2023]SelasaSelasa 17 Januari [17-01-2023]Selasa iniSelasa 17 Januari [17-01-2023]Selasa pertamaSelasa 24 Januari [24-01-2023]Selasa depanSelasa 24 Januari [2023- . PHP5. 0. 2 dan lebih tinggi- Selasa kemarin
- Selasa ini atau Selasa pertama
- Selasa depan
- Selasa ketiga
- Selasa keempat
- Selasa kemarin
- Selasa ini
- Selasa pertama atau Selasa depan
- Selasa kedua
- Selasa ketiga
Anda dapat melihat pada tabel di atas bahwa, sementara 'Selasa depan' mengembalikan hasil yang sama, 'pertama', 'kedua', 'ketiga',. pengubah semuanya telah berubah artinya - untungnya ke keadaan yang lebih logis
Anda juga mungkin memperhatikan bahwa ini hanya terjadi ketika Anda menghitung dari hari ini dan bukan pada contoh sebelumnya [kecuali hari ini adalah hari Sabtu]. Setiap kali Anda melakukan perhitungan berdasarkan hari, Anda harus menguji kemungkinan sebanyak mungkin. Apakah ini berhasil hari ini?
Terkadang Anda ingin mencari kejadian terakhir sehari sebelum hari ini, atau sebelum kemarin atau sebelum 2 hari yang lalu. Contoh berikut menunjukkan sintaks yang dapat Anda gunakan untuk ini
-3 hari Sabtu laluRabu 11 Januari [2023-01-11]-2 hari Sabtu laluKamis 12 Januari [2023-01-12]kemarin Sabtu laluJumat 13 Januari [2023-01-13]besok SabtuMinggu 22 Januari [22-01-2023Sekarang setelah Anda memahami cara kerja strtotime, Anda harus dapat secara drastis mengurangi jumlah kode yang diperlukan untuk menghitung tanggal yang lalu dan yang akan datang
Memeriksa apakah suatu tanggal di Masa Lalu atau Masa Depan
Fungsi strtotime mengembalikan nilai integer sehingga mudah untuk melihat apakah sebuah tanggal di masa lalu atau masa depan
if[strtotime[dateString] > time[]] { # date is in the future } if[strtotime[dateString] < time[]] { # date is in the past } if[strtotime[dateString] == time[]] { # date is right now }
Catatan. time[] setara dengan date['U'] dan mengembalikan stempel waktu saat ini ke detik terdekat
Anda mungkin ingin mengganti time[] dengan strtotime['0. 00'] jika Anda ingin membandingkan string tanggal dengan tanggal saat ini daripada tanggal dan waktu saat ini