当前位置: 首页 > 面试题库 >

是否将NOW()设置为日期时间数据类型的默认值?

甘西岭
2023-03-14
问题内容

我在表用户中有两列,即registerDate and lastVisitDate由日期时间数据类型组成。我想做以下事情。

  1. 将registerDate的默认值设置为MySQL NOW()
  2. 将lastVisitDate的默认值设置为0000-00-00 00:00:00而不是默认使用的null。

因为该表已经存在并且具有现有记录,所以我想使用Modify表。我试过使用下面的两段代码,但是都没有用。

ALTER TABLE users MODIFY registerDate datetime DEFAULT NOW()
ALTER TABLE users MODIFY registerDate datetime DEFAULT CURRENT_TIMESTAMP;

它给我错误: ERROR 1067 (42000): Invalid default value for 'registerDate'

我可以在MySQL中将默认的datetime值设置为NOW()吗?


问题答案:

从MySQL 5.6.5开始,您可以将DATETIME类型与动态默认值一起使用:

CREATE TABLE foo (
    creation_time      DATETIME DEFAULT   CURRENT_TIMESTAMP,
    modification_time  DATETIME ON UPDATE CURRENT_TIMESTAMP
)

甚至结合两个规则:

modification_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

参考:
http :
//dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html


http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-
available .html

在5.6.5之前,您需要使用TIMESTAMP数据类型,只要修改记录,该数据类型就会自动更新。但是,不幸的是,TIMESTAMP每个表只能存在一个自动更新的字段。

CREATE TABLE mytable (
  mydate TIMESTAMP
)

参见:http :
//dev.mysql.com/doc/refman/5.1/en/create-
table.html

如果要防止MySQL将timestamp值更新为on UPDATE(以便仅在上触发INSERT),则可以将定义更改为:

CREATE TABLE mytable (
  mydate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)


 类似资料:
  • 但以下内容: 只是管用。 日期的大小写相同。

  • 本文向大家介绍Java将日期类型Date时间戳转换为MongoDB的时间类型数据,包括了Java将日期类型Date时间戳转换为MongoDB的时间类型数据的使用技巧和注意事项,需要的朋友参考一下 存了一个时间类型(Date)的数据到mongo数据库中,但是前台显示的是一串数字。继而引发了如下问题: Java里面如何把 时间戳 1477387464495 转换为 2016-10-25 17:24:2

  • 是否可以将“默认内容类型”设置为“application/json;v=2.0”。我说 default 是因为我使用的是 HttpClient 类,并且我使用 DefaultRequestHeaders 将我的代理设置为默认值。 我按照这个例子来创建我的头https://stackoverflow.com/a/10679340/196526,但是我也使用版本控制,关于版本控制的信息保存在内容类型中

  • 问题内容: 我目前正在使用当前习惯用法创建UTC DateTime对象 是否有任何默认方法,所以我可以使用默认构造函数创建基于UTC的DateTime对象,从而使其更加隐式? 问题答案: 如果您只想为joda时间设置默认时区,请使用。 如果要更改整个jvm使用的时区,请使用方法。只需确保将其设置为早,因为它可以按joda时间进行缓存。.. 引用: 默认时区来自系统属性user.timezone。如

  • 问题内容: 是否可以使用NOW()将默认时间添加为10分钟? 我已经尝试过类似的方法: 但是,它不起作用。 问题答案: 我不认为你可以做到这一点。 在MySQL的文件指出: 数据类型规范中的DEFAULT value子句指示列的默认值。除一个例外,默认值必须为常数;否则为0。它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为诸如NOW()或CURRENT_DATE之类的函数的值。唯一

  • 问题内容: 更新时间 : 输出: 当我们添加时,需要一些信息来设置默认排序整数值,但是如果我将字符串添加到设置,则默认情况下不会排序。 更新: 并且Caps字母将在运行多次后始终进行排序。 java版本“ 1.6.0_26” Java™SE运行时环境(内部版本1.6.0_26-b03)Java HotSpot™客户端VM(内部版本20.1-b02,混合模式,共享) 请给我一些想法。谢谢 问题答案: