【问题标题】:Insert timestamp with milliseconds to Postgres table with PHP使用 PHP 将时间戳以毫秒为单位插入 Postgres 表
【发布时间】:2016-05-14 14:00:29
【问题描述】:

我有一个 Postgres 表,如下所示:

create table test
    (
        time_stamp timestamp
    );

我想用 PHP 生成一个字符串,它将以毫秒(或微秒)为单位的当前时间插入表中。

基于其他一些研究,我尝试插入以下结果:

date('Y-m-d H:i:s.u', time())

但我只有几秒钟。有什么想法吗?

【问题讨论】:

  • RTFM: php.net/time 它返回秒数。如果你想要毫秒,那么 php.net/microtime 但请注意 date() 无论如何都需要秒作为输入,所以如果你传入一个微时间,你最终会得到一些遥远的未来时间字符串,因为它会大 1000000 倍比 date() 的预期。
  • 为什么不在 SQL 中做呢? insert into test (time_stamp) values (current_timestamp)?

标签: php sql postgresql


【解决方案1】:

或者你可以使用日期:

list($usec, $sec) = explode(' ', microtime()); 
$usec = str_replace("0.", ".", $usec);
print date('H:i:s', $sec) . $usec;       

【讨论】:

    【解决方案2】:

    我原以为在 PHP 中有一种简单的方法可以做到这一点,但显然没有。这是解决方案:

    function get_time() {
        $time = microtime(true);
        $micro_time = sprintf("%06d", ($time - floor($time)) * 1e6);
        return date('Y-m-d H:i:s.', $time).$micro_time;
    }
    

    【讨论】:

      【解决方案3】:

      我正在使用类 datetime [2] 中的 date_create [1]

      $dt1 = date_create();
      echo $dt1->format('Y-m-d H:i:s.u');
      
      2021-09-09 11:12:04.292321
      

      [1] https://www.php.net/manual/en/function.date-create

      [2] https://www.php.net/manual/en/class.datetime.php

      【讨论】:

        猜你喜欢
        • 2020-08-03
        • 2020-02-22
        • 2015-04-29
        • 1970-01-01
        • 2020-09-03
        • 2023-03-11
        • 2011-08-02
        • 1970-01-01
        • 2015-06-17
        相关资源
        最近更新 更多