sql >> Databáze >  >> RDS >> PostgreSQL

Jak přiřadím celý den k poli datum a čas?

Odešlete své timestamp hodnotu do date pokud chcete jednoduchou syntaxi. Takhle:

SELECT *
FROM   tbl
WHERE  timestamp_col::date = '2011-12-01';  -- date literal

U velkých stolů to však bude rychlejší:

SELECT *
FROM   tbl
WHERE  timestamp_col >= '2011-12-01 0:0'    -- timestamp literal
AND    timestamp_col <  '2011-12-02 0:0';

Důvod:druhý dotaz nemusí transformovat každou jednotlivou hodnotu v tabulce a může využít jednoduchý index ve sloupci časového razítka. Výraz je sargable.

Poznámka vyloučila horní hranici (< místo <= ) pro správný výběr.
To můžete vynahradit vytvořením indexu pro výraz, jako je tento:

CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));

Pak bude první verze dotazu tak rychlá, jak jen bude možné.



  1. Odstranit dotaz Chcete-li odstranit řádky v MySQL

  2. SQL Server Vložit, pokud neexistuje

  3. Spouštěče prevence

  4. SQL SERVER – Trik – Spouštění SSMS s jiným účtem Windows