No però qui proprio non ci siamo dalle fondamenta, eh?
Allora, cominciamo subito col dire che io adesso non so se davvero pyodcb supporta oppure no il passaggio di parametri con tipi "adattati" python/sql anche all'interno di query annidate con openquery... diciamo solo che mi sembrerebbe
pazzescamente strano se non lo facesse. Ma tutto può essere. E' un mondo che onestamente conosco davvero pochino.
Detto questo, resta che quando tu fai
d = input("immetti data...[yyyy-mm-dd]> ")
# ...
final = crsr.execute(sql, d).fetchall()
Quel "d"
non è un datetime.datetime o un datetime.date, è una banalissima
stringa.
Quindi tutto ciò che poi viene fatto dopo non serve a niente per verificare se pyodcb supporta o non supporta, eccetera eccetera. Non ci siamo, devi lavorare con il tipo python giusto, altrimenti che senso ha?
Quello che tu devi provare è, per prima cosa, se con un database LOCALE riesci a fare una cosa banale come
import datetime
d = datetime.datetime(2020, 6, 15)
# ...
cursor.execute("select * from foo where starttime >= ? ", d).fetchall()
o qualcosa del genere. Ora questo dovresti riuscire a farlo sicuramente, se "starttime" è una colonna dichiarata SQL_TYPE_TIMESTAMP nel database (e ti consiglio di controllare... sempre, sempre coprire le basi prima).
Se riesci a fare questo, allora puoi passare a vedere se la stessa cosa funziona anche con un database remoto attraverso openquery:
import datetime
d = datetime.datetime(2020, 6, 15)
# ...
cursor.execute("select * from openquery(remotedb, 'select * from foo where starttime >= ? ')", d).fetchall()
(posto che ovviamente tirar giù tutti i dati dalla tabella remota e poi fare il "where" localmente funziona ma, come hai già notato, è lento per forza).
Sempre facendo attenzione che "starttime" sia SQL_TYPE_TIMESTAMP (coprire le basi).
Se effettivamente questo non funziona, allora puoi prendertela con pyodcb (ovvero, chiedere lumi direttamente lì...
Documentazione di pyodcb (va a sapere, magari è utile da leggere):
https://github.com/mkleehammer/pyodbc/wikiBug tracker di pyodcb (da cercare "openquery" o qualcosa del genere per vedere se qualcuno ha avuto problemi con queste cose):
https://github.com/mkleehammer/pyodbc/issues