Extract date (yyyy/mm/dd) from a timestamp in PostgreSQL
我只想从PostgreSQL中的时间戳中提取日期部分。
我需要它是postgresql
例如,如果我有
我试过选演员,但我只得到2011年:
1 2 | TIMESTAMP:DATE CAST(TIMESTAMP AS DATE) |
我用
1 2 | SELECT to_date(to_char(TIMESTAMP, 'YYYY/MM/DD'), 'YYYY/MM/DD') FROM val3 WHERE id=1; |
号
我试图让它成为一种功能:
1 2 3 4 5 6 7 | 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)的最佳方法是什么?
您可以通过在时间戳上加上EDOCX1[1]将其强制转换为日期。在psql中,这里是时间戳:
1 2 3 4 | # SELECT '2010-01-01 12:00:00'::TIMESTAMP; TIMESTAMP --------------------- 2010-01-01 12:00:00 |
现在我们将把它投射到一个日期:
1 2 3 4 | wconrad=# SELECT '2010-01-01 12:00:00'::TIMESTAMP::DATE; DATE ------------ 2010-01-01 |
号
另一方面,您可以使用
1 2 3 4 5 | => SELECT date_trunc('day', now()); date_trunc ------------------------ 2015-12-15 00:00:00+02 (1 ROW) |
使用日期功能:
1 | SELECT DATE(timestamp_field) FROM TABLE |
。
从字符字段表示到可以使用的日期:
1 | SELECT DATE(SUBSTRING('2011/05/26 09:00:00' FROM 1 FOR 10)); |
。
测试代码:
1 2 3 | 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; |
测试结果:
。
氧化镁
这在Python2.7中对我很有用
1 | SELECT some_date::DATE FROM some_table; |
。
你试过和
1 2 3 4 5 6 7 8 9 10 11 | 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) |
。
另一个测试套件:
1 2 3 4 5 6 7 8 9 10 11 | SELECT pg_catalog.date(t) FROM sometable; DATE ------------ 2011-05-26 (1 ROW) SHOW datestyle ; DateStyle ----------- ISO, MDY (1 ROW) |
只需执行