簡體   English   中英

MySQL日期列弄亂了

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM