在手动查询中,是否有类似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值中添加当前日期和时间。
你可以使用 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()
。 - tandy请使用 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 INTO servers (server_name, online_status, _exchange, disk_space, network_shares)
VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE');
我的环境:
我使用一台配置为Core i3的Windows笔记本电脑,内存为4GB,并且我在MySQL Workbench 6.2上完成了上述示例(版本6.2.5.0 Build 397 64位)
正确答案是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()
有一种微妙的区别: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 |
+-------------------------+-------------------------+------------------+
相关:
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())
UNIX_TIMESTAMP()
之后可以随时将格式转换为人类可读取的格式,根据个人方便进行国际化。
FROM_ UNIXTIME (unix_timestamp, [format ])
CURRENT_TIMESTAMP
,它会更加高效。ALTER TABLE servers MODIFY COLUMN network_shares datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;
now()
,还可以使用 current_timestamp()
和 localtimestamp()
。 显示时间戳不正确的主要原因是在插入 NOW() 时用单引号!这在 MySQL Workbench 中对我不起作用,因为此 IDE 会为 mysql 函数添加单引号,而我一开始没有意识到)
不要像在 MySQL Workbench 中那样使用带有单引号的函数。 它不起作用。
$rs = $db->Insert('register',"'$fn','$ln','$email','$pass','$city','$mo','$fil'","'f_name','l_name=','email','password','city','contact','image'");