PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgresql заявка между периоди от време

С датите (и часовете) много неща стават по-прости, ако използвате >= start AND < end .

Например:

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

В този случай все още трябва да изчислите началната дата на месеца, от който се нуждаете, но това трябва да е направо по произволен брой начини.

Крайната дата също е опростена; просто добавете точно един месец. Без да се забърквате с 28, 30, 31 и т.н.


Тази структура също има предимството, че може да поддържа използването на индекси.


Много хора може да предложат формуляр като следния, но тене използвайте индекси:

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

Това включва изчисляване на условията за всеки отделен ред в таблицата (сканиране) и не използване на индекс за намиране на диапазона от редове, които ще съвпадат (търсене на диапазон).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Поправете „INSERT има повече изрази от целевите колони“ в PostgreSQL

  2. pgFincore 1.2, разширение PostgreSQL

  3. Защо IS NOT NULL е false при проверка на тип ред?

  4. Използване на множество PostgreSQL схеми с Rails модели

  5. Няма резултати, върнати от грешката на заявката в PostgreSQL