簡體   English   中英

python中的SQL查詢日期范圍

[英]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-182015-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM