如何设置MySQL Datetime列的默认值?
在SQL Server中是getdate()。MySQL的等价物是什么?我使用MySQL 5。X,如果它是因式。
如何设置MySQL Datetime列的默认值?
在SQL Server中是getdate()。MySQL的等价物是什么?我使用MySQL 5。X,如果它是因式。
当前回答
可以解析默认时间戳。首先考虑你使用的字符集,例如,如果你使用utf8,这个字符集支持所有语言,如果你使用laten1,这个字符集只支持英语。下一步,如果您在任何项目下工作,您应该知道客户端时区,并选择您所在的客户端时区。此步骤是强制执行的。
其他回答
虽然你不能在默认定义的DATETIME中这样做,你可以简单地在插入语句中合并一个选择语句,就像这样:
INSERT INTO Yourtable (Field1, YourDateField) VALUES('val1', (select now()))
请注意,桌子周围没有引号。
MySQL 5.5
MySQL(5.6.5版本之前)不允许将函数用于默认的DateTime值。由于其奇怪的行为,TIMESTAMP不适合使用,不建议用作输入数据。(参见MySQL数据类型默认值。)
也就是说,您可以通过创建触发器来实现这一点。
我有一个DateCreated字段类型为DateTime的表。我在那个表上创建了一个触发器“Before Insert”和“SET NEW.DateCreated=NOW()”,它工作得很好。
如果你设置ON UPDATE CURRENT_TIMESTAMP,当表中的行数据更新时,它将占用当前时间。
CREATE TABLE bar(
`create_time` TIMESTAMP CURRENT_TIMESTAMP,
`update_time` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
在版本5.6.5中,可以在datetime列上设置默认值,甚至可以使列在行更新时更新。类型定义:
CREATE TABLE foo (
`creation_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`modification_time` DATETIME ON UPDATE CURRENT_TIMESTAMP
)
参考: http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available.html
您可以使用now()来设置datetime列的值,但请记住,不能将其用作默认值。