es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Teradata no acepta la variable de fecha de pandas.

Tengo una variable de fecha en Pandas que me gustaría pasar a una consulta SQL de Teradata –

import pandas como pd
import numpy como np
import pyodbc
import time
import os
import teradata como td
desde teradata import tdodbc

crear parámetros para fecha

fecha<em>desde</em>1 = pd.to<em>datetime('2021-09-29').strftime('%Y-%m-%d')
fecha</em>hasta<em>1 = pd.to</em>datetime('2021-10-30').strftime('%Y-%m-%d')

consulta SQL

tran = '''SELECT TRAN.ACCOUNT<em>NUMBER,
TRAN.DATE
from TRANSACTION TABLE TRAN
where TRAN.DATE >= ?
AND TRAN.DATE < ?
'''
pd.read</em>sql<em>query(tran, tdp</em>conn, params = [fecha<em>desde</em>1, fecha<em>hasta</em>1])

‘: (‘22008’, ‘[22008] [Teradata][ODBC Teradata Driver][Teradata Database] Invalid date supplied

¡GRACIAS!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para pasar una variable de fecha en pandas a través de una consulta sql de Teradata, se pueden utilizar los siguientes pasos:

    1. Defina las variables de fecha utilizando las funciones to_datetime() y strftime() de pandas:
    date_from_1 = pd.to_datetime('2021-09-29').strftime('%Y-%m-%d')
    date_to_1 = pd.to_datetime('2021-10-30').strftime('%Y-%m-%d')
    
    1. Escriba la consulta SQL y utilice “?” como marcadores de posición para las variables de fecha:
    tran = '''SELECT TRAN.ACCOUNT_NUMBER,
                    TRAN.DATE
             FROM TRANSACTION TABLE TRAN
             WHERE TRAN.DATE >= ?
             AND TRAN.DATE < ?'''
    
    1. Utilice la función read_sql_query() de pandas para ejecutar la consulta SQL, pasando las variables de fecha como parámetros:
    pd.read_sql_query(tran, tdp_conn, params=[date_from_1, date_to_1])
    

    Si se encuentra con un error como “‘22008’, ‘[22008] [Teradata][ODBC Teradata Driver][Teradata Database] Fecha no válida suministrada”, puede intentar formatear las variables de fecha en formato ISO (AAAA-MM-DD) antes de pasarlas a la consulta SQL, como se muestra en el primer paso anterior. También puede verificar el formato de fecha en la base de datos de Teradata y asegurarse de que coincida con el formato de las variables de fecha.

Comments are closed.