使用 PHP 将时间戳以毫秒为单位插入 Postgres 表

Posted

技术标签:

【中文标题】使用 PHP 将时间戳以毫秒为单位插入 Postgres 表【英文标题】:Insert timestamp with milliseconds to Postgres table with PHP 【发布时间】: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)? 【参考方案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

【讨论】:

以上是关于使用 PHP 将时间戳以毫秒为单位插入 Postgres 表的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 2008R2 上以毫秒为单位返回 DATEDIFF

如何在 Access 数据库中插入以毫秒为单位的日期时间?

如何在c ++中计算冒泡排序、插入排序和选择排序函数的时间(以毫秒为单位)

如何将格式为“3/22/2018 12:24:29 PM”的日期时间字符串格式化为sql时间戳以插入内存数据库中的h2?

如何在 PHP 中以毫秒为单位获取当前时间?

MFC 以毫秒为单位的测量功能