【问题标题】:Postgres timestamp: what is the number after the dot and how to remove it?Postgres时间戳:点后面的数字是多少以及如何删除它?
【发布时间】:2015-05-26 09:25:45
【问题描述】:

我正在使用 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

点后面的数字是多少,如何避免?

谢谢。

【问题讨论】:

    标签: postgresql timestamp sql-insert


    【解决方案1】:

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

    timetimestampinterval 接受可选的精度值 p,它指定保留在秒字段中的小数位数。默认情况下,对精度没有明确的限制。对于 timestampinterval 类型,p 的允许范围是 0 到 6。

    参考资料:

    【讨论】:

    • 在 PhpPgAdmin 中没有 timestamp(0) without time zone... 我试图用 SQL 查询更改它,但我得到一个语法错误。这是我的查询:ALTER TABLE myTable ALTER COLUMN date timestamp(0) without time zone
    • @smartmouse ALTER TABLE myTable ALTER COLUMN date TYPE timestamp(0) without time zone 怎么样?
    • 你是对的!我从这里复制了错误的语法 (ALTER TABLE table_name ALTER COLUMN column_name datatype):w3schools.com/sql/sql_alter.asp
    • @smartmouse 这是永远不会打开 w3schools 的另一个原因
    • @smartmouse 是的。并不是说我完全同意w3fools.com,但他们说得有道理。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      相关资源
      最近更新 更多