首页 文章

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

提问于
浏览
123

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

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

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

10 回答

  • 215

    你可以使用 NOW()

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

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

  • -7

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

    创建 'servers' 表如下 :

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

    My Environment:

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

  • 1

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

    看这里:Date and Time Functions

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

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

    UNIX_TIMESTAMP()
    

    之后可以随时使用convert to human readable格式,以最方便的方式进行国际化 .

    FROM_ UNIXTIME (unix_timestamp, [format ])
    
  • 4

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

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

    您不仅可以使用 now() ,还可以使用 current_timestamp()localtimestamp() . 显示时间戳不正确的主要原因是插入NOW() with single quotes !它没有立刻认识到它)

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

  • 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命令行参数设置为 True 来更改此行为并使MySQL使 NOW() 的行为与 SYSDATE() 相同 .

    请注意 NOW() (其中 CURRENT_TIMESTAMP() 为别名)与 subtlesubtle 方式不同:

    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 |
    +-------------------------+-------------------------+------------------+
    

    有关:

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

相关问题