如何获得当前日期和;在MySQL的时间?

时间:2013-10-08 11:18:10

标签: mysql sql datetime

我是否可以在手动查询中使用DATETIME之类的值或命令来插入当前日期和时间?

INSERT INTO servers (
  server_name, online_status, exchange, disk_space, network_shares
) VALUES(
  'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME' 
)

最后引用的DATETIME值是我想要添加当前日期和时间的地方。

10 个答案:

答案 0 :(得分:233)

您可以使用NOW()

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())

答案 1 :(得分: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() )

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE'
,CURRENT_TIMESTAMP() )

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

答案 2 :(得分: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
);

您的 INSERT 语句应为

INSERT INTO servers (server_name, online_status, _exchange, disk_space, network_shares)
VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE');

我的环境:

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

答案 3 :(得分:5)

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

见这里:Date and Time Functions

答案 4 :(得分:2)

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())

答案 5 :(得分:1)

在数据库设计中,我非常推荐使用Unixtime来实现一致性和索引/搜索/比较性能。

FROM_ UNIXTIME (unix_timestamp, [format ])

之后可以随时convert to human readable格式,按国内化最方便。

{{1}}

答案 6 :(得分:1)

如果您将更改默认值更改为CURRENT_TIMESTAMP,则效率更高,

ALTER TABLE servers MODIFY COLUMN network_shares datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;

答案 7 :(得分:0)

您不仅可以使用now(),还可以使用current_timestamp()localtimestamp()。 显示时间戳不正确的主要原因是使用单引号插入NOW() !它在MySQL Workbench中对我不起作用,因为这个IDE为mysql函数添加单引号,我不能立即识别它)

不要在MySQL Workbench中使用带单引号的函数。它不起作用。

答案 8 :(得分:0)

正确答案是SYSDATE()

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

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

请注意,NOW()(具有CURRENT_TIMESTAMP()作为别名)与SYSDATE()的区别在于微妙

  

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

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

date_time datetime NOT NULL DEFAULT SYSDATE()

如果您希望使用epoch格式的当前日期,则可以使用UNIX_TIMESTAMP()。例如:

select now(3), sysdate(3), unix_timestamp();

会产量

+-------------------------+-------------------------+------------------+
| now(3)                  | sysdate(3)              | unix_timestamp() |
+-------------------------+-------------------------+------------------+
| 2018-11-27 01:40:08.160 | 2018-11-27 01:40:08.160 |       1543282808 |
+-------------------------+-------------------------+------------------+

相关:

答案 9 :(得分:-7)

$rs = $db->Insert('register',"'$fn','$ln','$email','$pass','$city','$mo','$fil'","'f_name','l_name=','email','password','city','contact','image'");