在 pgSQL 中将日期转换为时间戳

i a*_*man 6 sql postgresql timestamp

有没有办法将日期转换为时间戳。例如,如果我有一个类似的日期2012/05/01,我如何将其转换为时间戳2012-05-01 00:00:01

mri*_*713 9

您可以timestamp使用以下代码将其转换为 a :

SELECT current_date::timestamp
Run Code Online (Sandbox Code Playgroud)

它将直接将时间分配00:00:00current_date


Tim*_*sen 6

您可以将日期列转换为文本,然后与时间戳的时间部分连接。在下面的查询中,我从当前日期创建了一个时间戳。

select (cast(current_date as text) || ' 00:00:01'):: timestamp
from yourTable;
Run Code Online (Sandbox Code Playgroud)

或者如果我们已经有一个日期类型,我们可以简单地添加时间组件:

select current_date + '00:00:01'::time
Run Code Online (Sandbox Code Playgroud)

输出:

11.07.2017 00:00:01
Run Code Online (Sandbox Code Playgroud)

演示

更新:

如果您只想要两个日期之间的月份差异,您可以使用以下内容:

DATE_PART('month', AGE(end_date, start_date))
Run Code Online (Sandbox Code Playgroud)

当然,这里不涉及时间组件,但假设您计划将虚拟对象分配00:00:01给两个时间戳,结果不会改变。