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

Date_trunc на PostgreSQL в mySQL

Функцията за извличане изглежда полезна и функцията за дата, която открих, решава някои от проблемите ми, но има ли някакъв начин да се репликира date_trunc на PostgreSQL?

Наистина, EXTRACT изглежда, че ще бъде най-близкото съответствие за този конкретен случай.

Вашият оригинален код в PG:

WHERE date_trunc('month', QUERY_DATE) BETWEEN 
    date_trunc('month', now()) - INTERVAL '4 MONTH' AND 
    date_trunc('month', now() - INTERVAL '1 WEEK')

Използване на EXTRACT :

WHERE EXTRACT(YEAR_MONTH FROM QUERY_DATE)
      BETWEEN
          EXTRACT(YEAR_MONTH FROM NOW() - INTERVAL 4 MONTH)
      AND
          EXTRACT(YEAR_MONTH FROM NOW() - INTERVAL 1 WEEK)

Въпреки че трябва да е функционално идентичен, това всъщност е преобразуване на датите в низ ГГГГММ, преди да се направи сравнението.

Друга опция би била използването на DATE_FORMAT за да възстановите низа от дата и да го принудите към началото на месеца:

WHERE DATE_FORMAT(QUERY_DATE, '%Y-%m-01')
      BETWEEN
          DATE_FORMAT(NOW() - INTERVAL 4 MONTH, '%Y-%m-01')
      AND
          DATE_FORMAT(NOW() - INTERVAL 1 WEEK, '%Y-%m-01')

Също така, имайте предвид, че MySQL наистина не се справя с периоди от време, дори когато полето е индексирано. Вероятно ще завършите с пълно сканиране на таблицата, ако не внимавате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да опресня JPA обекти, когато бекенд базата данни се промени асинхронно?

  2. PostgreSQL връща функция с персонализиран тип данни

  3. Незаконна инструкция:4 при стартиране на Django

  4. Как да разположите Percona Distribution за PostgreSQL за висока наличност

  5. 2ndQuadrant Deutschland – специална сделка за откриване на обучение