[英]mySQL date column is messed up
我做了一張桌子:
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| date | date | NO | | NULL | |
| user_id | int(8) | YES | | NULL | |
| isbn | varchar(13) | NO | | NULL | |
| price | decimal(6,2) | NO | | NULL | |
+---------+--------------+------+-----+---------+----------------+
而且,日期列不起作用。 我認為我需要將表修改為默認為“ CURDATE()”。 這就是我從谷歌搜索中獲得的東西。 我什至不確定這是否是問題,但是我的alter語句不起作用。
我正在嘗試與此:
mysql> ALTER TABLE buybacks MODIFY date date not null default curdate();
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'curdate()' at line 1
有人可以幫忙嗎?
具有作為MySQL保留字的列(或表)名稱通常不是一個好主意。 如果必須這樣做,請在名稱周圍使用反引號(`)
ALTER TABLE buybacks MODIFY `date` date not null default curdate();
編輯
但是,您不能將日期列設置為默認的curdate()。有關詳細信息,請參見MySQL錯誤列表中的此參考。
唯一的例外是您可以將CURRENT_TIMESTAMP指定為TIMESTAMP列的默認值。 這可能是給您默認值的可行選擇
編輯2
另一種選擇是觸發:
CREATE TRIGGER buybacks_insert BEFORE INSERT ON `buybacks`
FOR EACH ROW
SET NEW.`date` = CURDATE();
但是請注意,當您更改日期列的名稱時,您將更新觸發器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.