如何将时间戳转换为日期

时间:2019-08-30 23:16:16

标签: postgresql casting timestamp

在视图中,我正在投射一个没有时区的时间戳。

在我看来,其中任何一种都应该起作用:

Cast("Orders"."OrderDate" as Date),
Date("Orders"."OrderDate"),
"Orders"."OrderDate"::Date,

但是他们都给出了错误

cannot change data type of view column "OrderDate" from timestamp without time zone to date

Postgres 11
pgAdmin 4.9

2 个答案:

答案 0 :(得分:0)

SELECT vendor, 
       day, 
       item_category, 
       Sum(amount), 
       Sum(revenue) 
FROM   (SELECT mytable.*, 
               CASE item 
                 WHEN 'Apple' THEN 'Fruit' 
                 WHEN 'Orange' THEN 'Fruit' 
                 WHEN 'Peach' THEN 'Fruit' 
                 WHEN 'Lettuce' THEN 'Vegetable' 
                 WHEN 'Spinach' THEN 'Vegetable' 
                 WHEN 'Cabbage' THEN 'Vegetable' 
               END AS item_category 
        FROM   mytable) AS x 
GROUP  BY vendor, 
          day, 
          item, 
          item_category;
| date_trunc             |
| :--------------------- |
| 2019-08-31 00:00:00+01 |
select date_trunc('day', now());
| date_trunc |
| :--------- |
| 2019-08-31 |

db <>提琴here

答案 1 :(得分:0)

您无法更改视图中列的类型。您将需要将该视图以及所有依赖于该视图的对象删除,然后重新创建它们。