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

216
Views
Django: Trunc datetime da como resultado ninguno

Tengo el siguiente modelo:

 class Statistic(models.Model): meter = models.ForeignKey(Meter, on_delete=models.CASCADE, db_index=True) timestamp_start = models.DateTimeField(db_index=True) timestamp_end = models.DateTimeField(db_index=True) usage_start = models.DecimalField(max_digits=10, decimal_places=3) usage_end = models.DecimalField(max_digits=10, decimal_places=3) return_start = models.DecimalField(max_digits=10, decimal_places=3) return_end = models.DecimalField(max_digits=10, decimal_places=3)

Tengo el siguiente valor en el primer registro de timestamp_start en mi base de datos sqllite

 2016-12-22T06:15:30.420+02:00

Cuando ejecuto la siguiente consulta:

 statistics = Statistic.objects.filter(id=1) .annotate(timestamp=Trunc('timestamp_start','day', output_field=DateTimeField())) .values('timestamp') .annotate(usage_start = Min('usage_start'))

la marca de tiempo da como resultado Ninguno

QuerySet [{'usage_start': Decimal('136.972'), 'timestamp': Ninguno}]

Cuando adjunto el depurador y verifico los primeros registros de mi tabla de estadísticas como este

 Statistics.objects.all()[0].timestamp_start

vuelve:

fechahora.fechahora(2016, 12, 22, 6, 0)

Antes de enfrentar este problema, obtuve esta excepción:

La base de datos devolvió un valor de fecha y hora no válido. ¿Están instaladas las definiciones de zona horaria para su base de datos y pytz?

Tengo pytz instalado. Pero no tengo idea de cómo arreglar esto. ¿El valor es incorrecto? De todos modos, al final configuré use_tz en settings.py en falso. La excepción desapareció pero trunc no devuelve ninguno ahora. ¿Esto está causando el problema?

pd: Mi entorno Python 3, Django, base de datos Sql lite, windows

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Probablemente no haya cargado los datos de la zona horaria en mysql. TruncDate usa la función CONVERT_TZ bajo el capó, que devuelve NULL si no hay datos de zona horaria disponibles. Puede verificar qué SQL está usando la consulta evaluando lo siguiente:

 str(statistics.query)

Las instrucciones de Windows para cargar datos de zona horaria se pueden encontrar aquí:

  • https://dev.mysql.com/downloads/timezones.html
  • https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html#time-zone-installation (Asegúrese de desplazarse hacia abajo en la sección que habla de Windows)

Me encontré con este problema en Linux y lo resolví como se indica en esta otra publicación de StackOverflow:

  • convert_tz devuelve nulo
about 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!