mysql中如何设置默认时间为当前时间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中如何设置默认时间为当前时间?相关的知识,希望对你有一定的参考价值。

mysql 中的表 字段类型是 datetime 型的,默认时间为当前系统时间?请问该怎么写T_SQL语句?

修改日期类型为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个字节。

参考技术A MySQL 中,默认值无法使用函数
也就是你无法 设置某一列,默认值是 NOW () 这样的处理

假如需要 某列的默认值为 当前数据库时间,那么可以使用 TIMESTAMP 数据类型。插入的时候,忽略该列 即可。

dt TIMESTAMP
等价于
dt TIMESTAMP default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

create table testB (
id int PRIMARY KEY,
val varchar(10),
dt TIMESTAMP
);

INSERT INTO testB(id, val) VALUES(1, 'A');
INSERT INTO testB(id, val) VALUES(2, 'B');

SELECT
*
FROM
testB;
+----+------+---------------------+
| id | val | dt |
+----+------+---------------------+
| 1 | A | 2013-03-21 14:24:20 |
| 2 | B | 2013-03-21 14:24:21 |
+----+------+---------------------+
2 rows in set (0.00 sec)

UPDATE
testB
SET
val = 'C'
WHERE
id = 1;

SELECT
*
FROM
testB;

+----+------+---------------------+
| id | val | dt |
+----+------+---------------------+
| 1 | C | 2013-03-21 14:28:02 |
| 2 | B | 2013-03-21 14:24:21 |
+----+------+---------------------+
2 rows in set (0.00 sec)

假如仅仅需要 插入时记录时间, 更新的时候不需要, 那么需要修改表定义方式:
TIMESTAMP not null default CURRENT_TIMESTAMP

create table testC (
id int PRIMARY KEY,
val varchar(10),
dt TIMESTAMP not null default CURRENT_TIMESTAMP
);

INSERT INTO testC(id, val) VALUES(1, 'A');
INSERT INTO testC(id, val) VALUES(2, 'B');

SELECT
*
FROM
testC;

+----+------+---------------------+
| id | val | dt |
+----+------+---------------------+
| 1 | A | 2013-03-21 14:35:12 |
| 2 | B | 2013-03-21 14:35:13 |
+----+------+---------------------+
2 rows in set (0.00 sec)

UPDATE
testC
SET
val = 'CC'
WHERE
id = 1;

SELECT
*
FROM
testC;

+----+------+---------------------+
| id | val | dt |
+----+------+---------------------+
| 1 | CC | 2013-03-21 14:35:12 |
| 2 | B | 2013-03-21 14:35:13 |
+----+------+---------------------+
2 rows in set (0.00 sec)
参考技术B 哦 ,明白你的意思了,把日期类型 选择成timestamp 允许空 就可以了
CREATE TABLE `dtal` (
`uname` varchar(50) NOT NULL,
`udate` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
参考技术C 比如字段叫time
设置字段信息为当前插入或者修改的时间使用now()函数,或者current_date()

如何在 Mariadb 中为当前会话设置默认时间戳格式

【中文标题】如何在 Mariadb 中为当前会话设置默认时间戳格式【英文标题】:How to set the default timestamp format for the current session in Mariadb 【发布时间】:2020-09-27 12:44:45 【问题描述】:

如何设置默认时间戳格式,例如 YYYY-MM-DD HH24:MI:SS.FF3 或 'Month dd, YYYY, HH:MI A.M.'选择在当前会话中运行的查询,而不是通过MySQL 命令对每一列调用 DATE_FORMAT。

【问题讨论】:

你不能在会话中设置它是只读变量,如果你想你需要在 my.conf 【参考方案1】:

有一些格式调整的语言环境。

但是TIMESTAMP 列几乎是日期+时间;您唯一可以控制的是是否存储“小数”秒:TIMESTAMP(3)

如果 Locale 没有您想要的,您应该计划使用 DATE_FORMAT

【讨论】:

以上是关于mysql中如何设置默认时间为当前时间?的主要内容,如果未能解决你的问题,请参考以下文章

当前时间作为Mysql中“TIME”的默认值

mysql中怎么设置某字段为当前时间

mysql 建表时设置默认当前时间

MySQL创建数据库表怎么直接设置默认当前时间?

mysql 设置字段默认值为当前时间加5分钟

mysql 时间字段默认设置为当前时间