ejemplo - insert date postgresql
Postgresql-seleccione algo donde fecha="01/01/11" (2)
Tengo un campo de fecha y hora en mi Postgresql, llamado "dt". Me gustaria hacer algo como
SELECT * FROM myTable WHERE extract (date from dt) = ''01/01/11''
¿Cuál es la sintaxis correcta para hacer eso?
¡Gracias!
Con PostgreSQL hay una serie de funciones de fecha / hora disponibles, vea here .
En tu ejemplo, podrías usar:
SELECT * FROM myTable WHERE date_trunc(''day'', dt) = ''YYYY-MM-DD'';
Si ejecuta esta consulta regularmente, también es posible crear un índice utilizando la función date_trunc
:
CREATE INDEX date_trunc_dt_idx ON myTable ( date_trunc(''day'', dt) );
Una ventaja de esto es que hay más flexibilidad con las zonas horarias si es necesario, por ejemplo:
CREATE INDEX date_trunc_dt_idx ON myTable ( date_trunc(''day'', dt at time zone ''Australia/Sydney'') );
SELECT * FROM myTable WHERE date_trunc(''day'', dt at time zone ''Australia/Sydney'') = ''YYYY-MM-DD'';
Creo que quieres convertir tu dt
en una date
y corregir el formato de tu fecha literal :
SELECT *
FROM table
WHERE dt::date = ''2011-01-01'' -- This should be ISO-8601 format, YYYY-MM-DD
O la versión estándar :
SELECT *
FROM table
WHERE CAST(dt AS DATE) = ''2011-01-01'' -- This should be ISO-8601 format, YYYY-MM-DD
La función de extract
no comprende la "fecha" y devuelve un número.