所以我有这个疑问:
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函数的情况下这将如何应用。
答案 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