ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

现在(),请参阅dev.mysql.com/doc/refman/5.5/en/… ...请下次至少对您的问题进行一些研究,这可以很容易地用谷歌搜索(因此我只是对这个问题投了反对票)
我的问题更多是针对我应该如何在上面发布的语法中使用它。
请参阅 franciscos 的答案。但这是非常非常基本的,它只是一个函数调用。因此,同样,您应该在发布问题之前对问题进行更多的研究,并且您可能还想阅读一些关于 SQL 的说明。
具有讽刺意味。在努力寻找答案时……这个答案!

Y
Yuri

您可以使用 NOW()

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

#1054 - '字段列表'中的未知列 'stamp' - 有什么我遗漏的吗?
只需将 stamp 替换为您的字段名称即可,真的。不要只是复制和粘贴。
如果是“日期”字段类型,还可以使用 curdate()
A
Ankit Sharma

使用 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 替换为要用于插入时间的列名。


s
simhumileco

即使有很多公认的答案,我认为这种方式也是可能的:

创建您的“服务器”表,如下所示:

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');

我的环境:

Core i3 Windows 笔记本电脑,4GB RAM,我在 MySQL Workbench 6.2(版本 6.2.5.0 Build 397 64 Bits)上做了上面的例子


s
simhumileco

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

见这里:Date and Time Functions


c
codeforester

正确答案是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 命令行参数设置为 True 来更改此行为并使 NOW() 的行为方式与 SYSDATE() 相同。

请注意,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 |
+-------------------------+-------------------------+------------------+

有关的:

MySQL 中 NOW()、SYSDATE() 和 CURRENT_DATE() 之间的区别


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

T
The One and Only ChemistryBlob

在数据库设计中,我强烈推荐使用 Unixtime 来获得一致性和索引/搜索/比较性能。

UNIX_TIMESTAMP() 

之后总是可以convert to human readable格式化,国际化是个人最方便的。

FROM_ UNIXTIME (unix_timestamp, [format ])

F
Ferhat KOÇER

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

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

B
BenMorel

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

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


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

你应该简短地解释你的答案。
这个答案确实意义不大!