En PostgreSQL, el formato de las marcas de tiempo es independiente del almacenamiento. Una respuesta es utilizar to_char
y formatear la fecha y hora a cualquier formato que necesita en el momento que lo necesite, así:
select to_char(current_timestamp, 'yyyy-MM-dd HH24:MI:SS.MS');
select to_timestamp('2012-10-11 12:13:14.123',
'yyyy-MM-dd HH24:MI:SS.MS')::timestamp;
Pero si se debe establecer el formato predeterminado:
Cambiar la fecha y hora de PostgreSQL formato a nivel mundial:
Tome un vistazo a su zona horaria, ejecute esto como una consulta SQL:
show timezone
Result: "US/Eastern"
Así que cuando se está imprimiendo a cabo current_timestamp, ve esto:
select current_timestamp
Result: 2012-10-23 20:58:35.422282-04
El -04
al final es su zona horaria con respecto a UTC.Puede cambiar su zona horaria con:
set timezone = 'US/Pacific'
continuación:
select current_timestamp
Result: 2012-10-23 18:00:38.773296-07
Así notar los -07
allí, eso significa que el Pacífico es de 7 horas de UTC. ¿Cómo puedo hacer que esa zona horaria antiestética desaparezca? Una forma es simplemente para hacer una tabla, el valor predeterminado es una marca de tiempo sin zona horaria:
CREATE TABLE worse_than_fail_table
(
mykey INT unique not null,
fail_date TIMESTAMP not null
);
A continuación, si se agrega una marca de tiempo a la tabla y seleccionar de que
select fail_date from worse_than_fail_table
Result: 2012-10-23 21:09:39.335146
yay, ninguna zona horaria en el fin. ¡Pero desea más control sobre cómo se muestra la marca de tiempo de forma predeterminada! Se podría hacer algo como esto:
CREATE TABLE moo (
key int PRIMARY KEY,
boo text NOT NULL DEFAULT TO_CHAR(CURRENT_TIMESTAMP,'YYYYMM')
);
Es un campo de texto que le da más control sobre la forma en que aparece de forma predeterminada cuando se hace una select somecolumns from sometable
. Aviso Puede convertir una cadena de marca de tiempo:
select '2012-10-11 12:13:14.56789'::timestamp
Result: 2012-10-11 12:13:14.56789
puedas jugar un current_timestamp a timestamp
que elimina la zona horaria:
select current_timestamp::timestamp
Result: 2012-10-23 21:18:05.107047
Usted puede deshacerse de la zona horaria de esta manera:
select current_timestamp at time zone 'UTC'
Result: "2012-10-24 01:40:10.543251"
Pero si realmente quiere la zona horaria atrás, puede hacer esto:
select current_timestamp::timestamp with time zone
Result: 2012-10-23 21:20:21.256478-04
Puede dar un tirón lo que quiere con extracto:
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 20
Y esta monstruosidad:
SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'EST';
Result: 2001-02-16 20:38:40
aplicación cliente, que se utiliza? –
prototipo en php, moviéndose a node.js en aproximadamente 6 mo –
Entonces esta sería una configuración de php para cambiar, no una configuración de Postgres. –