Saya punya tabel di MySQL. Seperti apa pernyataan sql yang ingin ditambahkan katakanlah 2 hari ke nilai tanggal saat ini dalam tabel?
UPDATE classes
SET
date = date + 1
where id = 161
ini menambahkan satu detik ke nilai, saya tidak ingin memperbarui waktu, saya ingin menambahkan dua hari?
Dengan asumsi bidang Anda adalah tipe date
[atau serupa]:
SELECT DATE_ADD[`your_field_name`, INTERVAL 2 DAY]
FROM `table_name`;
Dengan contoh yang Anda berikan, tampilannya bisa seperti ini:
UPDATE classes
SET `date` = DATE_ADD[`date` , INTERVAL 2 DAY]
WHERE `id` = 161;
Pendekatan ini juga bekerja dengan datetime
.
UPDATE table SET nameofdatefield = ADDDATE[nameofdatefield, 2] WHERE ...
Kueri ini bagus untuk mengambil nilai antara tanggal saat ini dan 3 tanggal berikutnya
SELECT * FROM tableName
WHERE columName BETWEEN CURDATE[] AND DATE_ADD[CURDATE[], INTERVAL 3 DAY]
Ini pada akhirnya akan menambah 3 hari buffer tambahan ke tanggal saat ini.
update tablename set coldate=DATE_ADD[coldate, INTERVAL 2 DAY]
Untuk kebutuhan anda:
UPDATE classes
SET `date` = DATE_ADD[`date`, INTERVAL 2 DAY]
WHERE id = 161
SELECT DATE_ADD[CURDATE[], INTERVAL 2 DAY]
DATE_ADD[FROM_DATE_HERE, INTERVAL INTERVAL_TIME_HERE DAY]
akan memberikan Tanggal setelah menyesuaikan INTERVAL
misalnya.
DATE_ADD[NOW[], INTERVAL -1 DAY] for deducting 1 DAY from current Day
DATE_ADD[NOW[], INTERVAL 2 DAY] for adding 2 Days
Anda bisa menggunakan like
UPDATE classes WHERE date=[DATE_ADD[date, INTERVAL 1 DAY]] WHERE id=161
SET date = DATE_ADD[ fieldname, INTERVAL 2 DAY ]
Anda dapat meninggalkan fungsi date_add.
UPDATE `table`
SET `yourdatefield` = `yourdatefield` + INTERVAL 2 DAY
WHERE ...
Beberapa hari ini saya sedang disibukkan dengan tugas kuliah yang menumpuk. Terlebih untuk tugas project UAS mata kuliah pemrograman dimana harus membuat 1 buah program yang bisa melakukan CRUD [Create, Read, Update, Delete] data ke database MySQL.
Nah untuk project tersebut saya membuat program mengenai input data domain. Saya buat program dengan mengacu ke situasi aslinya, yaitu misal ketika registrasi domain, maka nanti nama domain tersebut akan expired 1 tahun kemudian. Berarti kita dari awal harus langsung insert data date ke MySQL dengan set date nya 1 tahun ke depan dari tanggal sekarang.
Baca Juga : Mengatasi Error mysqldump gtid Saat Menjalankan mysqldump
Untuk contohnya disini saya sudah buat database list_domain dengan table domain
MariaDB [list_domain]> show tables; +-----------------------+ | Tables_in_list_domain | +-----------------------+ | domain | +-----------------------+ 1 row in set [0.00 sec] MariaDB [list_domain]> desc domain; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | id | varchar[2] | NO | PRI | NULL | | | nama_domain | varchar[50] | YES | | NULL | | | tgl_expired | date | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+ 3 rows in set [0.00 sec]
Untuk contoh syntax insert nya dengan set date manual seperti berikut
MariaDB [list_domain]> insert into domain [id,nama_domain,tgl_expired] values['1','rizkypratama.id','2019-07-11'];
Baca Juga : Backup dan Restore Database SQLite
Itulah syntax jika kita insert data date dengan set date nya manual, gimana kalau sesuai case saya diatas tadi, ingin set date nya langsung 1 tahun kedepan, bisa dengan syntax seperti berikut
MariaDB [list_domain]> insert into domain [id,nama_domain,tgl_expired] values['2','rizkypratama.net',CURDATE[] + INTERVAL 1 YEAR];
CURDATE[] = Untuk mengambil value date sesuai date saat itu juga, current date
INTERVAL 1 YEAR = Untuk set date supaya ditambah 1 tahun dari tanggal hari ini, misal tanggal hari ini yaitu 11-07-2019, maka ditambah 1 tahun menjadi 11-07-2020
Untuk hasilnya nanti seperti berikut
MariaDB [list_domain]> select * from domain; +----+------------------+-------------+ | id | nama_domain | tgl_expired | +----+------------------+-------------+ | 1 | rizkypratama.id | 2019-07-11 | | 2 | rizkypratama.net | 2020-07-11 | +----+------------------+-------------+
Kalau misal mau set date 1 bulan kedepan, tinggal diubah saja YEAR menjadi MONTH, atau DAY jika hanya set beberapa hari kedepan saja.
Ref : //www.w3schools.com/sql/func_mysql_date_add.asp
Mungkin cukup sekian, semoga bermanfaat
Rizky Pratama. Tinggal
di Bekasi, Jawa Barat. Seorang IT di salah satu perusahaan IT. Pengguna Mac, Linux dan Windows
Selain sebagai penulis di blog ini, saya juga penulis di blog saya yang lain, yaitu //pratama.biz.id