Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

151
Views
Resultados extraños de marzo de Postgres

Estoy tratando de calcular el tiempo prorrateado entre dos fechas durante períodos de varios meses usando SQL en PostgresSQL.

Mi fórmula es bastante simple.

 select iot.*, (iot.DATE_FIN - iot.DATE_DEBUT)::double precision / NULLIF( extract (day from iot.DATE_FIN - date_trunc('month', iot.DATE_DEBUT)), 0::double precision) as prorata from ( select DATE '2020-05-01' as DATE_DEBUT, DATE '2020-05-31' as DATE_FIN ) iot

Dame el resultado esperado => 1

Pero cuando cambio a marchar con

 select iot.*, (iot.DATE_FIN - iot.DATE_DEBUT)::double precision / NULLIF(extract (day from iot.DATE_FIN - date_trunc('month', iot.DATE_DEBUT)), 0::double precision) as prorata from ( select DATE '2020-03-01' as DATE_DEBUT, DATE '2020-03-31' as DATE_FIN ) iot

Obtuve un resultado extraño de 1.0344827586206897

¿Algunas ideas?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Esto es causado por date_trunc('month' , esta función devuelve una fecha con una zona horaria, pero todo su cálculo no maneja la zona horaria.

Si obliga a Postgres a ignorar la zona horaria, debería funcionar:

 select iot.*, (iot.DATE_FIN - iot.DATE_DEBUT)::double precision / NULLIF(extract (day from iot.DATE_FIN - date_trunc('month', iot.DATE_DEBUT)::timestamp without time zone), 0::double precision) as prorata from ( select DATE '2020-03-01' as DATE_DEBUT, DATE '2020-03-31' as DATE_FIN ) iot

Acabo de emitir date_trunc con ::timestamp without time zone .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!