mysql 我定义了一个字段是int型的,我怎么给它设定一个默认值(默认值为:当前时间的时间戳)?

作者&投稿:滑婕 (若有异议请与网页底部的电邮联系)
mysql int型时间戳,我能给它设定一个当前时间的默认值么?~

可以

修改日期类型为timestamp 并允许空,如下:
CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestamp NULL DEFAULT
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT
CHARSET=utf8;
如果是在navicat下操作的话,设置字段的类型为timestamp,默认值写上CURRENT_TIMESTAMP

扩展资料

mysql中的时间类型:
mysql中我们用的时间类型有DATE DATETIME TIME TIMESTAMP四种:
1、DATE只表示日期,检索以YYYY-MM-DD的格式显示,范围是1000-01-01到9999-12-31。
2、TIME只表示时间,检索以HH:MM:SS格式显示,范围是00:00:00到23:59:59。
3、DATETIME表示了日期和时间,检索以YYYY-MM-DD HH:MM:SS格式显示。
4、TIMESTAMP和DATETIME表示格式一样两者的不同点如下:
当使用timestamp的时候,数据有更新的时候这个字段自动更新为当前时间,所以可以作为lastmodify使用,这个变化是默认设置,如果想使时间不更新可以设置DEFAULT CURRENT_TIMESTAMP
timestamp的范围不能早于1970或者晚于2037,超过这个时间范围的话为0。
timestamp存储的时候是转为UTC存储的,获取的时候根据客户端所在时区进行展示。
timestamp占4个字节,datetime占8个字节。

不能定义为int型,应该定义为timestamp型,这样本身就默认是当前系统时间

可以用触发器来实现

查看参考手册:
在CREATE TABLE语句中,可以用下面的任何一种方式声明第1个TIMESTAMP列:

o 用DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句,列为默认值使用当前的时间戳,并且自动更新。

o 不使用DEFAULT或ON UPDATE子句,与DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP相同。

o 用DEFAULT CURRENT_TIMESTAMP子句不用ON UPDATE子句,列为默认值使用当前的时间戳但是不自动更新。

o 不用DEFAULT子句但用ON UPDATE CURRENT_TIMESTAMP子句,列有默认值0并自动更新。

o 用常量DEFAULT值,列有给出的 默认值。如果列有一个ON UPDATE CURRENT_TIMESTAMP子句,它自动更新,否则不。

换句话说,你可以为初始值和自动更新的值使用当前的时间戳,或者其中一个使用,或者两个皆不使用。(例如,你可以指定ON UPDATE来启用自动更新而不让列自动初始化)。

· 在DEFAULT和ON UPDATE子句中可以使用CURRENT_TIMESTAMP、CURRENT_TIMESTAMP()或者NOW()。它们均具有相同的效果。

两个属性的顺序并不重要。如果一个TIMESTAMP列同时指定了DEFAULT和ON UPDATE,任何一个可以在另一个的前面。

例子,下面这些语句是等效的:

CREATE TABLE t (ts TIMESTAMP);
CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP);
CREATE TABLE t (ts TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
DEFAULT CURRENT_TIMESTAMP);


涪陵区19118646283: MySQL表有个字段是int类型,比如初始值为1000,我想每次修改给该值减一,请问一条sql语句可以吗 -
龙战博帅: 一般来说,id是不允许改变的.case when 可以执行条件判断,如果要全表执行,建议先全部减少1,在判断如果小于0,则等于0. update user set id=(select case idwhen id>0 then id-1else 0where id=xxx ) where id=xxx;

涪陵区19118646283: mysql中in这是啥比较运算符? -
龙战博帅: 这是用来查询,在字段条件符合某个集合中任意一个值时,返回这条数据 例:where class_name in ('first','second','third'); 表示字段class_name中有'first'或者'second'或者'third'中任意一个都符合条件,会被查询出来

涪陵区19118646283: mysql数据字段为int型,第一个数字不能为0吗? - 技术 -
龙战博帅: 是的,整型变量第一个肯定不能为0了,你这个数字已经溢出了,所以,建议你用VARCHAR字段记录.

涪陵区19118646283: mysql 我定义了一个字段是int型的,我怎么给它设定一个默认值(默认值为:当前时间的时间戳)? -
龙战博帅: 可以用触发器来实现

涪陵区19118646283: mysql查询in为什么用不上索引 -
龙战博帅: 合理使用索引,Cardinality是一个重要指标,太小的话跟没建没区别,还浪费空间. 如果你source字段是一个unique,就会用到索引. 如果你一定要用索引,可以用force index,不过效率不会有改善一般还会更慢就是了.

涪陵区19118646283: mysql 字段为多个值怎么用in -
龙战博帅: where city in ('1','2','3','4','5','6','7','8','9','10')是要每一个被查询的上边都加引号你那样的话一个引号里是不对的,像你那样'1,2,3,4,5,6,7,8,9,10' 仅仅代表一个字符串

涪陵区19118646283: mysql查询语句in和exists二者的区别和性能影响 -
龙战博帅: in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询.一直以来认为exists比in效率高的说法是不准确的. 如果查询的两个表大小相当,那么用in和exists差别不大. 如果两个表中一个较小,一个是大表...

涪陵区19118646283: in - array 和in 有什么区别呢?in - array 是php的函数吗,in是在mysql中的吗,我不太清楚,哪位高人指点一下 -
龙战博帅: 不能in只能插入结果集 也就是只能是值,而你的数组集合只用¥shuzu表示 相当于一个字段,无法使用的

涪陵区19118646283: mysql中IN的字段本身就是逗号分隔的怎么写 -
龙战博帅: 第一部分: FIND_IN_SET()函数用法, 查询用逗号分隔的字段, 表A中 go_value字段的值是以逗号分割, 查询 go_value字段中含有3的行: select * from A where find_in_set('3', go_value);

涪陵区19118646283: sql字段为int类型,sql语句怎么写 -
龙战博帅: 楼主的要求是id不为负数,也就是说需要check约束,在id int后面加上 check(id>=0)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网