十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
mysql datetime设置now()无效的,没有此用法,datetime类型不能设置函数式默认值,只能通过触发器等来搞。
成都创新互联公司主营中江网站建设的网络公司,主营网站建设方案,成都App定制开发,中江h5小程序制作搭建,中江网站营销推广欢迎中江等地区企业咨询
想设置默认值,只能使用timestamp类型,然后默认值设置为:CURRENT_TIMESTAMP
修改日期类型为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个字节。
mysql的字段默认值不可以是函数。除
timestamp字段可以用current_timestamp外。其它都使用常数为默认值。
下面的例子是:在名字为database的表中插入一个名为addtime的字节,并且默认值为当前时间。
alter
table
`database`add
addtime
timestamp
not
null
default
current_timestamp()
;
database是表名,
addtime是字段名,
timestamp是类型,
not
null表明不能为空,
default
current_timestamp()默认时间为当前时间。
mysql安装成功后,在系统中默认建立一个usr用户,查看mysql.user表的方法:
1、在电脑中必须装有MySQL数据库。
2、打开电脑中的MySQLWorkbench软件。点击已有的连接,输入密码进行登录。
3、登录成功后,输入代码“showdatabases;”,可以查看mysql中有哪些数据库。点击上方“闪电”图标执行输入的代码。可以发现一个名为mysql的数据库。
4、输入代码“use mysql; show tables;”点击执行,会进入mysql数据库中,并为显示mysql中的数据表。数据表比较多,将右侧滑动条滑至底部,可以发现最后一个便是需要的user表。
5、输入代码“descuser;”点击执行,可以查看个字段的基本信息。字段比较多可以滑动右侧滑动条进行查看。
6、输入代码“select*fromuser;”点击执行,会显示user表中的数据信息,如图user表中共有四条数据。数据比较长可以滑动下方滑动条进行查看。
-- 方法一:
由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的。代替的方案是使用TIMESTAMP类型代替DATETIME类型。
TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
1.列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
2.列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
3.你明确地设定TIMESTAMP列为NULL.
4.除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
所以把日期类型 选择成timestamp 允许空就可以了
CREATE TABLE test (
uname varchar(50) NOT NULL,
updatetime timestamp NULL DEFAULTCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果要在navicat下操作的话,将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可
1、mysql默认的有
mysql
test
information_schema
performance_schema
2、创建用户时候可以设定默认数据库
mysql
-uroot
-p123456
-e"CREATE
USER
'user1'@'localhost'
IDENTIFIED
BY
'123456';"
mysql
-uroot
-p123456
-e"GRANT
ALL
ON
db01.*
TO
'user1'@'localhost';"
3、登陆时候可以指定数据库,例如
mysql
-A
-uroot
-p123456
-Dmysql