387 Stimmen

Datum (yyyy/mm/dd) aus einem Zeitstempel in PostgreSQL extrahieren

Ich möchte nur den Datumsteil aus einem Zeitstempel in PostgreSQL extrahieren.

Ich brauche ein Postgresql DATE Typ, damit ich sie in eine andere Tabelle einfügen kann, die eine DATE Wert.

Zum Beispiel, wenn ich 2011/05/26 09:00:00 Ich möchte 2011/05/26

Ich habe versucht zu gießen, aber ich bekomme nur 2011:

timestamp:date
cast(timestamp as date)

Ich habe versucht to_char()to_date() :

SELECT to_date(to_char(timestamp, 'YYYY/MM/DD'), 'YYYY/MM/DD') 
FROM val3 WHERE id=1;

Ich habe versucht, es zu einer Funktion zu machen:

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

Was ist der beste Weg, um Datum (yyyy/mm/dd) aus einem Zeitstempel in PostgreSQL zu extrahieren?

620voto

Wayne Conrad Punkte 95828

Sie können Ihren Zeitstempel in ein Datum umwandeln, indem Sie ihm das Suffix ::date . Hier steht in psql ein Zeitstempel:

# select '2010-01-01 12:00:00'::timestamp;
      timestamp      
---------------------
 2010-01-01 12:00:00

Jetzt werden wir es auf ein Datum übertragen:

wconrad=# select '2010-01-01 12:00:00'::timestamp::date;
    date    
------------
 2010-01-01

Auf der anderen Seite können Sie date_trunc Funktion. Der Unterschied zwischen ihnen besteht darin, dass letztere denselben Datentyp zurückgibt wie timestamptz Ihre Zeitzone bleibt erhalten (falls erforderlich).

=> select date_trunc('day', now());
       date_trunc
------------------------
 2015-12-15 00:00:00+02
(1 row)

149voto

James Allman Punkte 39506

を使用します。 Datum Funktion:

select date(timestamp_field) from table

Von einer Zeichenfelddarstellung bis hin zu einem Datum, das Sie verwenden können:

select date(substring('2011/05/26 09:00:00' from 1 for 10));

Test-Code:

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;

Testergebnis:

pgAdmin result

pgAdmin result wide

26voto

Elmira Behzad Punkte 345

In postgres einfach :

TO_CHAR(timestamp_column, 'DD/MM/YYYY') as submission_date

22voto

leonbloy Punkte 68836

Haben Sie versucht, es auf ein Datum zu übertragen, mit <mydatetime>::date ?

14voto

thedarkgriffen Punkte 374

Dies funktioniert für mich in Python 2.7

 select some_date::DATE from some_table;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X