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

Върнете същия резултат, когато се опитвате да намерите различни данни

Вашият проблем е липсата на скоби:В SQL AND има предимство пред OR , така че трябва да поставите скоби около целия си предишен израз:

SELECT * FROM dim_date
WHERE ( -- added bracket
 EXTRACT (MONTH FROM date_cal) BETWEEN 3 AND 5
 OR (EXTRACT (MONTH FROM date_cal) = 2 AND EXTRACT (DAY FROM date_cal) >= 15)
 OR (EXTRACT (MONTH FROM date_cal) = 6 AND EXTRACT (DAY FROM date_cal) <= 21)
 ) -- added bracket
AND EXTRACT (YEAR FROM date_cal) BETWEEN 2010 AND 2012

Без скобите получавате A or B or (C and D) , но искате (A or B or C) and D




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извикам функция на база данни с помощта на SQLAlchemy във Flask?

  2. Управлявайте обединяването на връзки в уеб приложение с множество наематели с Spring, Hibernate и C3P0

  3. Postgis + boost::geometry + C++

  4. Как да използвате Postgres any-клаузата с естествени заявки за JPA/Hibernate (параметри на масив)

  5. Извличане на агрегати за произволни интервали от време