如何设置MySQL Datetime列的默认值?
在SQL Server中是getdate()。MySQL的等价物是什么?我使用MySQL 5。X,如果它是因式。
如何设置MySQL Datetime列的默认值?
在SQL Server中是getdate()。MySQL的等价物是什么?我使用MySQL 5。X,如果它是因式。
当前回答
下面是如何在MySQL 5.1上做到这一点:
ALTER TABLE `table_name` CHANGE `column_name` `column_name`
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
我不知道为什么您必须输入两次列名。
其他回答
如果您试图将默认值设置为NOW(),MySQL支持您必须更改该列的类型TIMESTAMP而不是DATETIME。TIMESTAMP默认有当前日期和时间..我认为它将解决你的问题。
使用以下代码
DELIMITER $$
CREATE TRIGGER bu_table1_each BEFORE UPDATE ON table1 FOR EACH ROW
BEGIN
SET new.datefield = NOW();
END $$
DELIMITER ;
我运行MySql服务器5.7.11和这句话:
ALTER TABLE table_name CHANGE date_column datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
不起作用。但下面是:
ALTER TABLE table_name CHANGE date_column datetime NOT NULL DEFAULT '1000-01-01 00:00:00'
只是工作。
作为旁注,mysql文档中提到:
DATE类型用于有日期部分但没有时间部分的值。MySQL以'YYYY-MM-DD'格式检索并显示DATE值。支持的范围为1000-01-01 ~ 99999-12-31。
即使他们还说:
无效的DATE、DATETIME或TIMESTAMP值被转换为适当类型的“零”值('0000-00-00'或'0000-00-00 00:00:00')。
MySQL 5.6已经修复了这个问题。
ALTER TABLE mytable CHANGE mydate datetime NOT NULL DEFAULT 'CURRENT_TIMESTAMP'
可以解析默认时间戳。首先考虑你使用的字符集,例如,如果你使用utf8,这个字符集支持所有语言,如果你使用laten1,这个字符集只支持英语。下一步,如果您在任何项目下工作,您应该知道客户端时区,并选择您所在的客户端时区。此步骤是强制执行的。