簡體   English   中英

在SQL查詢中轉換日期時間

[英]convert datetime in SQL query

我想在一段時間內選擇記錄。 但是,數據庫中的相應數據類型類似於“ 2017-11-13-05-36-25”。 我需要先將其轉換為日期時間格式。 使用pyodbc進行以下SQL查詢:

connection = pyodbc.connect("Driver={\
ODBC Driver 13 for SQL Server};\
Server=server1,\
100;Database=my_db;\
Uid=abc;\
Pwd=123;\
Encrypt=yes;\
TrustServerCertificate=no;\
Connection Timeout=30;")

cmd = r'SELECT startDate FROM table1 where \
CONVERT (datetime, startDate, 120) between \
CONVERT(datetime, "2017-10-8 00:00:00", 120) and \
CONVERT(datetime,"2017-11-7 00:00:00", 120)'

a = pd.read_sql(cmd, con = connection)

執行后,我收到以下錯誤:

Error: ('42S22', "[42S22] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Invalid column name '2017-10-8 00:00:00'. (207) (SQLExecDirectW)")

如何獲得正確的結果?

默認情況下,字符串文字在SQL Server中由單引號分隔。 雙引號表示標識符,例如列或對象名稱。

因此,而不是"2017-10-8 00:00:00"使用'2017-10-8 00:00:00'和同為"2017-11-7 00:00:00"

這樣可以解決您收到的錯誤。

無效的列名'2017-10-8 00:00:00'

順便說一下CONVERT (datetime, startDate, 120)將使您的查詢無法進行。 它將無法在該列上進行索引范圍查找。 startDate應該使用合適的數據類型( date / datetime / datetime2 ),這樣就不需要在運行時進行轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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