如何获取MySQL的当前日期和时间?

Sam*_*son 138 mysql sql datetime

是否有像DATETIME这样的值或命令,我可以在手动查询中使用它来插入当前日期和时间?

INSERT INTO servers (
  server_name, online_status, exchange, disk_space, network_shares
) VALUES(
  'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME' 
)
Run Code Online (Sandbox Code Playgroud)

最后引用的DATETIME值是我想要添加当前日期和时间的位置.

fra*_*ler 246

你可以使用NOW():

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())
Run Code Online (Sandbox Code Playgroud)

  • 只需用你的字段名称替换标记,真的.不要只是复制和粘贴. (43认同)
  • 如果它是"日期"字段类型,您还可以使用`curdate()` (8认同)

Ank*_*rma 28

使用 CURRENT_TIMESTAMP()now()

喜欢

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1','ONLINE','ONLINE','100GB','ONLINE',now() )
Run Code Online (Sandbox Code Playgroud)

要么

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE'
,CURRENT_TIMESTAMP() )
Run Code Online (Sandbox Code Playgroud)

将date_time替换为要用于插入时间的列名.


小智 23

即使有许多已接受的答案,我认为这种方式也是可能的:

按如下方式创建"服务器":

CREATE TABLE `servers`
(
      id int(11) NOT NULL PRIMARY KEY auto_increment,
      server_name varchar(45) NOT NULL,
      online_status varchar(45) NOT NULL,
      _exchange varchar(45) NOT NULL, 
      disk_space varchar(45) NOT NULL,
      network_shares varchar(45) NOT NULL,
      date_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)

你的INSERT语句应该是:

INSERT INTO servers (server_name, online_status, _exchange, disk_space, network_shares)
VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE');
Run Code Online (Sandbox Code Playgroud)

我的环境:

具有4GB RAM的Core i3 Windows笔记本电脑,我在MySQL Workbench 6.2(版本6.2.5.0 Build 397 64位)上做了上述示例


Ale*_*ec. 5

是的,您可以使用该CURRENT_TIMESTAMP()命令。

参见此处:日期和时间函数


cod*_*ter 5

正确答案是SYSDATE()

INSERT INTO servers (
    server_name, online_status, exchange, disk_space,
    network_shares, date_time
)
VALUES (
    'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE', SYSDATE()
);
Run Code Online (Sandbox Code Playgroud)

我们可以更改此行为,并使行为方式与将sysdate_is_now命令行参数设置NOW()为 相同。SYSDATE()True

请注意NOW()(它有CURRENT_TIMESTAMP()一个别名)SYSDATE()与以下内容有细微的不同:

SYSDATE() 返回它执行的时间。这与 NOW() 的行为不同,NOW() 返回一个常量时间,指示语句开始执行的时间。(在存储的函数或触发器中,NOW() 返回函数或触发语句开始执行的时间。)

正如Erandi所指出的,最好使用该DEFAULT子句创建表,以便在插入新行时自动使用时间戳填充该列:

date_time datetime NOT NULL DEFAULT SYSDATE()
Run Code Online (Sandbox Code Playgroud)

如果您想要纪元格式的当前日期,则可以使用UNIX_TIMESTAMP()。例如:

select now(3), sysdate(3), unix_timestamp();
Run Code Online (Sandbox Code Playgroud)

会产生

+-------------------------+-------------------------+------------------+
| now(3)                  | sysdate(3)              | unix_timestamp() |
+-------------------------+-------------------------+------------------+
| 2018-11-27 01:40:08.160 | 2018-11-27 01:40:08.160 |       1543282808 |
+-------------------------+-------------------------+------------------+
Run Code Online (Sandbox Code Playgroud)

有关的: