假設我有一個優惠的資料表如下
(狀態列=1代表可使用 =0代表無法使用)
優惠名稱 | 狀態 | 優惠到期日 |
---|---|---|
AAA | 1 | 2019-10-10 |
BBB | 0 | 2018-11-11 |
CCC | 0 | 2019-01-01 |
DDD | 1 | 2020-10-10 |
有辦法設定時間到期讓資料表的狀態欄位自動更改為0嗎??
麻煩各位大大給小弟提點
不用搞什麼定時自動改資料庫
Table 改成以下這樣
真心不騙
優惠名稱 | 優惠開始日 | 優惠到期日 |
---|---|---|
AAA | 2019-10-01 | 2019-10-10 |
BBB | 2018-11-01 | 2018-11-11 |
CCC | 2018-12-25 | 2019-01-01 |
DDD | 2020-10-01 | 2020-10-10 |
然後
原本的
SELECT *
FROM coupon
WHERE status = '1';
改成
SELECT *
FROM coupon
WHERE CONVERT(date, GETDATE()) BETWEEN 優惠開始日 AND 優惠到期日;
我把資料表改成您說的那樣後
執行SQL語法錯誤
我上網查了一下資料改成這樣可以正確執行
SELECT *
FROM SpecialOffersdata
WHERE CURDATE() BETWEEN 'Startdate' AND 'expirydate';
但查不到日期範圍內的資料
不知道哪出錯了
資料庫的兩個日期都是date型態
1.用系統自動排程去呼叫PHP
2.把更新狀態的SQL放在前端網頁,讓他給別人觸發
3.或者是看那個網頁的功能才觸發期間變更
依照這種狀況狀態的欄位是不必要的
你只需要判斷當前日期是否超過優惠日期就可以了
如果是真的特殊狀況要這樣做
那就要利用 crontab 之類的排程去處理
mysql 好像有event Scheduler,下面連結給你參考看看
https://stackoverflow.com/questions/27018992/how-to-set-a-timer-in-mysql
不用狀態
直接在使用的時候檢查日期就可以了