首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL查询中转换日期时间

在SQL查询中转换日期时间
EN

Stack Overflow用户
提问于 2017-11-18 17:36:15
回答 1查看 804关注 0票数 0

我想在一段时间内选择记录。然而,数据库中相应的数据类型是'2017-11-13-05-36-25‘。我需要先把它转换成日期时间格式。下面的SQL查询是使用pyodbc进行的:

代码语言:javascript
复制
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)

执行后,我收到以下错误:

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

怎样才能得到正确的结果?

EN

回答 1

Stack Overflow用户

发布于 2017-11-18 17:40:19

默认情况下,字符串文本由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)将使您的查询无法进行。它将无法对该列执行索引范围搜索。(date/datetime/datetime2)应该使用合适的数据类型,这样就不需要在运行时进行转换。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47369044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档