[英]Trying not to hardcode date range in SQL query (Python, SQL server)
[英]SQL query date range in python
我只是想在特定的日期范圍內查詢SQLServer
數據庫。 不知怎的,我只是無法弄清楚自己。 這是我做的:
import pyodbc
import pandas as pd
con = pyodbc.connect("Driver={SQL Server}; Server=link")
tab = pd.read_sql_query("SELECT * FROM OPENQUERY(aaa, 'SELECT * FROM bbb.ccc WHERE number like (''K12345%'')')",con)
tab['DT']
0 2015-09-17 08:51:41
1 2015-09-17 09:14:09
2 2015-09-17 09:15:03
3 2015-09-24 15:20:55
4 2015-09-24 15:23:47
5 2015-10-02 08:49:59
6 2015-10-30 14:08:40
7 2015-10-30 14:13:38
8 2015-11-03 14:30:06
9 2015-11-03 14:30:22
10 2015-11-04 07:14:40
11 2015-11-04 10:43:51
Name: DT, dtype: datetime64[ns]
現在我想我應該能夠通過使用以下查詢選擇2015-09-18
和2015-10-02
之間的日期記錄。 不知怎的,它失敗了,錯誤
DatabaseError:sql上的執行失敗:SELECT * FROM OPENQUERY(aaa,'SELECT * FROM bbb.ccc''2015-09-18''和''2015-10-02'''之間的DT)“。
有人可以幫我解釋一下我做錯了嗎?
tab2 = pd.read_sql_query("SELECT * FROM OPENQUERY(aaa, 'SELECT * FROM bbb.ccc `WHERE DT between ''2015-09-18'' and ''2015-10-02''')",con)`
你應該使用參數綁定 :
tab2 = pd.read_sql_query("SELECT * FROM bbb.ccc WHERE DT between ? and ?", con, params=['2015-09-18', '2015-10-02'])
的?
是您從列表中傳遞的值的占位符。 數量?
必須與列表中的項目數相匹配。
而且我不確定為什么你有一個SELECT *
包裝在另一個SELECT *
所以我簡化了最里面的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.