postgresql错误:多个小数点

时间:2017-06-20 04:26:33

标签: postgresql

所以我有这个疑问:

SELECT 
    TO_CHAR(date_part('hour', created_at), 'YYYY-MM-DD HH24'),
    to_char(created_at, 'day') ",
    COUNT(*) AS "
FROM table  
GROUP BY 1,2
ORDER BY 1 DESC

当我执行查询时,我得到了这个:

  

错误:多个小数点

搜索stackoverflow我在这里找到了一些建议: How to format bigint field into a date in Postgresql?但我不知道为什么我必须除以1000,以及在date_part函数的情况下这将如何应用。

1 个答案:

答案 0 :(得分:3)

我认为created_at是时间戳?我选择date_part(text, timestamp)date_part(text, interval),如果是date_part将返回double precision ,您尝试应用蒙版'YYYY-MM-DD HH24',例如:

v=# select date_part('hour', now());
 date_part
-----------
         9

我不知道你怎么可能从九点开始获得年,月,日和小时...

然而,我假设您希望将截断日期的掩码应用于小时精度,这是使用date_trunc(text, timestamp)完成的:

v=# select date_trunc('hour', now());
       date_trunc
------------------------
 2017-06-20 09:00:00+01
(1 row)

现在您可以应用时间格式:

v=# select to_char(date_trunc('hour', now()),'YYYY-MM-DD HH24');
    to_char
---------------
 2017-06-20 09
(1 row)

但如果这是您想要的,那么您根本不需要截断时间:

v=# select to_char(now(),'YYYY-MM-DD HH24');
    to_char
---------------
 2017-06-20 09
(1 row)

https://www.postgresql.org/docs/current/static/functions-datetime.html