sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql-fråga mellan datumintervall

Med datum (och tider) blir många saker enklare om du använder >= start AND < end .

Till exempel:

SELECT
  user_id
FROM
  user_logs
WHERE
      login_date >= '2014-02-01'
  AND login_date <  '2014-03-01'

I det här fallet måste du fortfarande beräkna startdatumet för den månad du behöver, men det bör vara enkelt på många olika sätt.

Slutdatumet är också förenklat; lägg bara till exakt en månad. Inget bråk med 28:e, 30:e, 31:a, etc.


Denna struktur har också fördelen av att kunna upprätthålla användningen av index.


Många kanske föreslår ett formulär som följande, men de gör det inte använd index:

WHERE
      DATEPART('year',  login_date) = 2014
  AND DATEPART('month', login_date) = 2

Detta innebär att man beräknar villkoren för varje enskild rad i tabellen (en skanning) och inte använder index för att hitta intervallet av rader som kommer att matcha (en intervallsökning).



  1. Hur ställer jag in sortering för en anslutning i SQL Server?

  2. Undvik dubbletter i INSERT INTO SELECT-frågan i SQL Server

  3. Hur man installerar och säkrar MariaDB 10 i CentOS 7

  4. Hur man inaktiverar alla CHECK &främmande nyckelbegränsningar i en databas i SQL Server (T-SQL-exempel)