繁体   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