我正在从sql服务器迁移到postgres。
有什么方法可以执行以下操作,并且仍然可以正常工作吗? SELECT CAST('1/1/2018' AS datetime2)
我尝试过并失败了
CREATE TYPE datetime2 AS (date2 TIMESTAMP); --doesn't work
答案 0 :(得分:2)
如果要在PostgreSQL中将datetime2
作为timestamp
类型的同义词,请使用domain而不是type:
create domain datetime2 as timestamp;
然后您的演员表将按原样工作:
SELECT CAST('1/1/2018' AS datetime2);
┌─────────────────────┐
│ datetime2 │
├─────────────────────┤
│ 2018-01-01 00:00:00 │
└─────────────────────┘
除名称外,其行为与原始timestamp
类型相同。
您在做的问题是创建composite type(具有date2
类型的单个字段timestamp
的记录),该记录可能也非常有用,但可用于其他类型的任务。 / p>
答案 1 :(得分:1)
我认为您想要的是:
SELECT '1/1/2018' AS TIMESTAMP;
timestamp
-----------
1/1/2018
或
SELECT CAST('1/1/2018' AS TIMESTAMP);
timestamp
---------------------
2018-01-01 00:00:00
或
SELECT CAST('1/1/2018' AS DATE);
date
------------
2018-01-01
这实际上取决于您要做什么。