Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

415
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda