从PostgreSQL的时间戳中提取日期(yyyy / mm / dd)

| 我只想从PostgreSQL的时间戳中提取日期部分。 我需要它是一个Postgresql的“ 0”类型,因此我可以将它插入另一个需要“ 0”值的表中。 例如,如果我有
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)的最佳方法是什么?     
已邀请:
您可以通过在时间戳后加上
::date
将时间戳转换为日期。在psql中,这是一个时间戳记:
# select \'2010-01-01 12:00:00\'::timestamp;
      timestamp      
---------------------
 2010-01-01 12:00:00
现在,我们将其转换为日期:
wconrad=# select \'2010-01-01 12:00:00\'::timestamp::date;
    date    
------------
 2010-01-01
另一方面,您可以使用
date_trunc
功能。它们之间的区别是后者返回相同的数据类型(如
timestamptz
),以保持您的时区完整(如果需要)。
=> select date_trunc(\'day\', now());
       date_trunc
------------------------
 2015-12-15 00:00:00+02
(1 row)
    
使用日期功能:
select date(timestamp_field) from table
从字符字段表示形式到日期,您可以使用:
select date(substring(\'2011/05/26 09:00:00\' from 1 for 10));
测试代码:
create table test_table (timestamp_field timestamp);
insert into test_table (timestamp_field) values(current_timestamp);
select timestamp_field, date(timestamp_field) from test_table;
测试结果:     
您是否尝试过用
<mydatetime>::date
将其转换为日期?     
这在python 2.7中对我有用
 select some_date::DATE from some_table;
    
只需
select date(timestamp_column)
,您将获得唯一的日期部分。 有时执行
select timestamp_column::date
可能会返回
date 00:00:00
,但未删除
00:00:00
部分。但是我已经看到
date(timestamp_column)
在所有情况下都能正常工作。希望这可以帮助。     
CREATE TABLE sometable (t TIMESTAMP, d DATE);
INSERT INTO sometable SELECT \'2011/05/26 09:00:00\';
UPDATE sometable SET d = t; -- OK
-- UPDATE sometable SET d = t::date; OK
-- UPDATE sometable SET d = CAST (t AS date); OK
-- UPDATE sometable SET d = date(t); OK
SELECT * FROM sometable ;
          t          |     d      
---------------------+------------
 2011-05-26 09:00:00 | 2011-05-26
(1 row)
另一个测试套件:
SELECT pg_catalog.date(t) FROM sometable;
    date    
------------
 2011-05-26
(1 row)

SHOW datestyle ;
 DateStyle 
-----------
 ISO, MDY
(1 row)
    
在postgres中简单地: TO_CHAR(timestamp_column,\'DD / MM / YYYY \')作为Submitting_date     

要回复问题请先登录注册