我想从PostgreSQL中的时间戳中提取日期部分 .
我需要它是一个postgresql DATE
类型,所以我可以将它插入到另一个需要 DATE
值的表中 .
例如,如果我有 2011/05/26 09:00:00
,我想 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
从PostgreSQL中的时间戳中提取日期(yyyy / mm / dd)的最佳方法是什么?
6 回答
您可以通过使用
::date
后缀将时间戳转换为日期 . 这里,在psql中,是一个时间戳:现在我们将它投射到一个日期:
另一方面,您可以使用
date_trunc
函数 . 它们之间的区别在于后者返回相同的数据类型,如timestamptz
,保持您的时区不变(如果您需要) .使用date功能:
从字符字段表示到您可以使用的日期:
测试代码:
测试结果:
您是否尝试使用
<mydatetime>::date
将其投放到某个日期?这在python 2.7中适用于我
另一个测试包:
只要做
select date(timestamp_column)
,你就会得到唯一的日期部分 . 有时候select timestamp_column::date
可能会返回date 00:00:00
,它不会删除00:00:00
部分 . 但我看到date(timestamp_column)
在所有情况下都能完美地运作 . 希望这可以帮助 .