是否可以在手动查询中使用诸如DATETIME之类的值或命令来插入当前日期和时间?
INSERT INTO servers (
server_name, online_status, exchange, disk_space, network_shares
) VALUES(
'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME'
)
末尾引用的DATETIME值是我要添加当前日期和时间的位置。
是否可以在手动查询中使用诸如DATETIME之类的值或命令来插入当前日期和时间?
INSERT INTO servers (
server_name, online_status, exchange, disk_space, network_shares
) VALUES(
'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME'
)
末尾引用的DATETIME值是我要添加当前日期和时间的位置。
Answers:
您可以使用NOW()
:
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())
curdate()
使用 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替换为要用于插入时间的列名。
即使有很多公认的答案,我认为这种方式也是可行的:
创建您的“服务器”表,如下所示:
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位)上进行了上述示例
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())
正确的答案是SYSDATE()。
INSERT INTO servers (
server_name, online_status, exchange, disk_space,
network_shares, date_time
)
VALUES (
'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE', SYSDATE()
);
我们可以更改此行为,并使NOW()
行为与SYSDATE()
通过将sysdate_is_now命令行参数设置为True
。
需要注意的是NOW()
(其具有CURRENT_TIMESTAMP()
作为别名),从不同SYSDATE()
的微妙的方法:
SYSDATE()返回执行时间。这与NOW()的行为不同,后者的行为返回一个恒定时间,该时间指示语句开始执行的时间。(在存储的函数或触发器中,NOW()返回函数或触发语句开始执行的时间。)
如Erandi所示,最好使用DEFAULT
子句创建表,以便在插入新行时自动使用时间戳填充该列:
date_time datetime NOT NULL DEFAULT SYSDATE()
如果您希望当前日期为纪元格式,则可以使用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 |
+-------------------------+-------------------------+------------------+
有关:
$rs = $db->Insert('register',"'$fn','$ln','$email','$pass','$city','$mo','$fil'","'f_name','l_name=','email','password','city','contact','image'");