Postgres 时间戳:点后的数字是多少以及如何删除它?

Postgres timestamp: what is the number after the dot and how to remove it?

我正在使用 PHP 向我的 Postgres 数据库中插入新记录。 在我的查询中,我添加了函数 now() 来写入插入的日期和时间。

$query = "INSERT INTO myTable(field1, field2, date, field4, field5) values('" . pg_escape_string($value1) . "', '" . (int) pg_escape_string($value2) . "', NOW(), '" . pg_escape_string($value4) . "', '" . pg_escape_string($value5) . "')";

日期单元格的类型是 timestamp without time zone,这是它如何写入日期:

2015-05-26 11:13:51.727018

点后面的数字是多少以及如何避免它?

谢谢。

那些是微秒。而是将其定义为 timestamp(0) without time zone

time, timestamp, and interval accept an optional precision value p which specifies the number of fractional digits retained in the seconds field. By default, there is no explicit bound on precision. The allowed range of p is from 0 to 6 for the timestamp and interval types.

参考文献:

可以说,它不是点后的数字,而是最后一个冒号后的数字的一部分:“51.727018 秒”。这实际上与您 输入 时间戳的方式无关,而与您 输出 时间戳的方式有关。

请参阅 Date-Time functions and formatting functions 的手册页,了解如何选择更适合您使用的格式,例如

to_char("date", 'YYYY-MM-DD HH:MI:SS')

或作为一个整数 Unix 时间戳,这样可以节省应用程序中的重新解析:

cast(extract(epoch from "date") as int)