【问题标题】:How to get current date & time in MySQL?如何在 MySQL 中获取当前日期和时间?
【发布时间】:2013-10-15 07:03:04
【问题描述】:

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

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

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

【问题讨论】:

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

标签: mysql sql datetime


【解决方案1】:

你可以使用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 - 'field list' 中的未知列 'stamp' - 我有什么遗漏吗?
  • 只需将 stamp 替换为您的字段名称即可,真的。不要只是复制和粘贴。
  • 如果是“日期”字段类型,也可以使用curdate()
【解决方案2】:

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

请看这里:Date and Time Functions

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:
      $rs = $db->Insert('register',"'$fn','$ln','$email','$pass','$city','$mo','$fil'","'f_name','l_name=','email','password','city','contact','image'");
      

      【讨论】:

      • 你应该简短地解释你的答案。
      • 这个答案确实意义不大!
      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

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

        创建您的 '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');
        

        我的环境:

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

        【讨论】:

          【解决方案7】:

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

          UNIX_TIMESTAMP() 
          

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

          FROM_ UNIXTIME (unix_timestamp, [format ])
          

          【讨论】:

            【解决方案8】:
            INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
            VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())
            

            【讨论】:

              【解决方案9】:

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

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

              【讨论】:

                【解决方案10】:

                正确答案是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 |
                +-------------------------+-------------------------+------------------+
                

                相关:

                【讨论】:

                  猜你喜欢
                  • 2011-01-01
                  • 2010-10-03
                  • 2019-08-13
                  • 2017-10-05
                  • 1970-01-01
                  • 2015-03-22
                  • 2012-12-04
                  相关资源
                  最近更新 更多