从 PostgreSQL 中的时间戳中提取日期 (yyyy/mm/dd)
我想从 PostgreSQL 中的时间戳中提取日期部分。
我需要它是 postgresql DATE
类型,以便我可以将其插入到另一个需要 DATE
值的表中。
例如,如果我有 2011/05/26 09:00:00
,我想要 2011/05/26
我尝试投射,但只得到 2011 :
timestamp:date
cast(timestamp as date)
我尝试使用 to_char()
和 to_date()
:
SELECT to_date(to_char(timestamp, 'YYYY/MM/DD'), 'YYYY/MM/DD')
FROM val3 WHERE id=1;
我尝试将其设为函数:
CREATE OR REPLACE FUNCTION testing() RETURNS void AS '
DECLARE i_date DATE;
BEGIN
SELECT to_date(to_char(val1, "YYYY/MM/DD"),"YYYY/MM/DD")
INTO i_date FROM exampTable WHERE id=1;
INSERT INTO foo(testd) VALUES (i);
END
从 PostgreSQL 中的时间戳中提取日期 (yyyy/mm/dd) 的最佳方法是什么?
I want to extract just the date part from a timestamp in PostgreSQL.
I need it to be a postgresql DATE
type so I can insert it into another table that expects a DATE
value.
For example, if I have 2011/05/26 09:00:00
, I want 2011/05/26
I tried casting, but I only get 2011:
timestamp:date
cast(timestamp as date)
I tried to_char()
with to_date()
:
SELECT to_date(to_char(timestamp, 'YYYY/MM/DD'), 'YYYY/MM/DD')
FROM val3 WHERE id=1;
I tried to make it a function:
CREATE OR REPLACE FUNCTION testing() RETURNS void AS '
DECLARE i_date DATE;
BEGIN
SELECT to_date(to_char(val1, "YYYY/MM/DD"),"YYYY/MM/DD")
INTO i_date FROM exampTable WHERE id=1;
INSERT INTO foo(testd) VALUES (i);
END
What is the best way to extract date (yyyy/mm/dd) from a timestamp in PostgreSQL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
您可以通过在时间戳后面添加
::date
来将时间戳转换为日期。这里,在 psql 中,是一个时间戳:现在我们将其转换为日期:
另一方面,您可以使用
date_trunc
函数。它们之间的区别在于后者返回相同的数据类型,例如timestamptz
保持您的时区完整(如果您需要的话)。You can cast your timestamp to a date by suffixing it with
::date
. Here, in psql, is a timestamp:Now we'll cast it to a date:
On the other hand you can use
date_trunc
function. The difference between them is that the latter returns the same data type liketimestamptz
keeping your time zone intact (if you need it).使用 date 函数:
从字符字段表示形式到日期您可以使用:
测试代码:
测试结果:
Use the date function:
From a character field representation to a date you can use:
Test code:
Test result:
在 postgres 中简单地说:
In postgres simply :
您是否尝试过使用
::date
将其转换为日期?Have you tried to cast it to a date, with
<mydatetime>::date
?只需
select date(timestamp_column)
,您就会得到唯一的日期部分。有时,
select timestamp_column::date
可能会返回date 00:00:00
,但不会删除00:00:00
部分。但我已经看到date(timestamp_column)
在所有情况下都能完美工作。希望这有帮助。Just do
select date(timestamp_column)
and you would get the only the date part.Sometimes doing
select timestamp_column::date
may returndate 00:00:00
where it doesn't remove the00:00:00
part. But I have seendate(timestamp_column)
to work perfectly in all the cases. Hope this helps.这在 python 2.7 中对我有用
This works for me in python 2.7
另一个测试套件:
Another test kit:
您可以使用
date_trunc('day', field)
。You can use
date_trunc('day', field)
.