Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

419
Vistas
¿Cuál es la forma correcta de comparar objetos de fecha y hora de SQL y objetos de fecha y hora de Python en una consulta?

Estoy usando Jupyter Notebooks y conecté mi base de datos PostreSQL así:

 %load_ext sql from sqlalchemy import create_engine

Estoy usando la datetime y hora de Python y la biblioteca pytz para crear un objeto de fecha y hora consciente de la zona horaria:

 import pandas as pd import datetime as dt import pytz from pytz import timezone eastern = timezone('EST') now = dt.datetime.now() start = dt.datetime(now.year, now.month, now.day - 2, now.hour, now.minute, tzinfo=eastern)

Ahora, cuando intento hacer una consulta SQL, hago algo como esto para crear un marco de datos de pandas:

 events_query = pd.read_sql( """\ SELECT start_time, end_time, FROM events WHERE room_id=2 AND deleted=false AND start_time < {} limit 3 """.format(start), engine)

Sin embargo, en la línea start_time < {} , aparece este error:

 ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "14" LINE 10: and start_time < 2020-06-16 14:07:00-05:00

Sin embargo, cuando compruebo los tipos y los valores de comparación del objeto de fecha y hora SQL start_time y mi objeto de fecha y hora de Python creado, la comparación funciona normalmente (si omito la comparación start_time < {} ):

 test = events_query['start_time'].values[0] print(test) print(start) print(test > start)

Esto imprimirá:

 2038-11-25 12:00:00-05:00 2020-06-16 14:07:00-05:00 True

Lo que he probado alternativamente En lugar de usar la notación .format() , también he intentado usar Python f-strings para insertar la variable de start , además de usar el formato del operador %. El error fue el mismo al comparar start_time con una variable.

Lo siento, esta es la segunda vez que publico en SO, avíseme si formateé mi pregunta correctamente.

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda