Hola usuario de nuestra web, tenemos la solución a tu pregunta, deslízate y la hallarás aquí.
Solución:
Solía tener un problema muy similar hace años, y luego descubrí que puedo hacer
ALTER DATABASE database_name SET datestyle TO "ISO, MDY";
Trata eso. (Esto funciona por base de datos, para una solución para todas sus bases de datos, establezca este parámetro en usted postgresql.conf
– gracias a @a_horse_with_no_name.)
Tenga en cuenta que la configuración predeterminada no es independiente de la configuración regional. Sin embargo, despus de initdb
lo ajusta a lo que quiera, puede cambiarlo usted mismo en el postgresql.conf
.
El comentario de @ swasheck me hizo notar que con mi configuración:
test=# SHOW lc_ctype;
lc_ctype
--------------------
Hungarian, Hungary
(1 row)
test=# SHOW lc_time;
lc_time
--------------------
Hungarian, Hungary
(1 row)
configuración datestyle
tiene el siguiente efecto:
SET datestyle TO "ISO, MDY";
SELECT current_date;
date
------------
2012-06-21
(1 row)
Ahora bien, esto no es realmente esperado, y es lo mismo en otro servidor con en_US.UTF8
, también. Difícil "ISO, DMY"
, también me sugiere que el "ISO"
parte está más o menos anulando a la otra parte cuando se produce un producción. Para aporte valores, tiene el efecto esperado, como se resume en la siguiente tabla:
input values
'2016/01/21' '01/21/2016' '21/01/2016' output
──────────────────────────────────────────────────────────────────────
ISO, YMD OK -- -- 2016-01-21
ISO, DMY -- OK -- 2016-01-21
ISO, MDY -- -- OK 2016-01-21
– significa arriba que el estilo de entrada dado da como resultado un error para el dado datestyle
configuración.
Tras una lectura cuidadosa de la documentación, se puede ver que datestyle
es un par de configuraciones parcialmente conflictivas:
Por razones históricas, esta variable contiene dos componentes independientes: la especificación del formato de salida (ISO, Postgres, SQL o alemán) y la especificación de entrada / salida para el pedido de año / mes / día (DMY, MDY o YMD).
Para mí, significa que uno tiene que encontrar el que se adapte a sus necesidades experimentando un poco, pero la mejor manera es dejarlo en el valor predeterminado y siempre usar un formato de entrada inequívoco. Dos de estos son 'YYYY-MM-DD'
y 'YYYYMMDD'
. Prefiero lo primero, incluso usando esta IRL;)
Nota la datestyle
configuración (y otras configuraciones de tiempo de ejecución) desde postgresql.conf
puede ser anulado por un ALTER DATABASE bla SET datestyle ...
, configurándolo permanentemente para una sola base de datos, o por SET datestyle TO ...
configurándolo para la sesión actual. Este último puede ser útil al importar datos de terceros con un formato de fecha diferente.
Gracias @a_horse_with_no_name | @dezso | @ ypercubeᵀᴹ
Quiero escribir la respuesta que es simple de implementar: Pasos
Camino 1 : configuración de estilo de fecha solo por base de datos
-
show datestyle;
mostrarle el estilo de fecha actual “ISO, DMY” o “ISO, MDY” -
Ahora dependiendo de lo que quieras en postgres DMY o MDY establecido en la siguiente consulta
ALTER DATABASE "my_database_name" SET datestyle TO "ISO, DMY";
o
ALTER DATABASE "my_database_name" SET datestyle TO "ISO, MDY";
-
Paso más importante: Siempre después de configurar datestyle reiniciar postgres
sudo service postgresql restart
O
sudo /etc/init.d/postgresql restart
-
Vamos a probar la configuración
si has establecido DMY la consulta a continuación debería funcionar para usted
Consulta:
select '20/12/2016'::date
Producción:"2016-12-20"
O
si has establecido MDY la consulta a continuación debería funcionar para usted
Consulta:
select '12/19/2016'::date
Producción:"2016-12-19"
Camino 2 : Permanentemente : lo que sea que establezca en el archivo de configuración se establecerá en todas las bases de datos que creará en el futuro
-
En /etc/postgresql/9.3/main/postgresql.conf conjunto
datestyle = 'iso, dmy'
Odatestyle = 'iso, mdy'
-
Paso más importante: Siempre después de configurar datestyle reiniciar postgres
sudo service postgresql restart
O
sudo /etc/init.d/postgresql restart
-
Vamos a probar la configuración
si has establecido DMY la consulta a continuación debería funcionar para usted
Consulta:
select '20/12/2016'::date
Producción:"2016-12-20"
O
si has establecido MDY la consulta a continuación debería funcionar para usted
Consulta:
select '12/19/2016'::date
Producción:"2016-12-19"
Comentarios y valoraciones
Acuérdate de que te permitimos valorar esta sección si te fue de ayuda.