Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和SQL Server:日期时间数据问题_Python_Sql Server_Datetime - Fatal编程技术网

Python和SQL Server:日期时间数据问题

Python和SQL Server:日期时间数据问题,python,sql-server,datetime,Python,Sql Server,Datetime,我有一个SQL Server表,其中包含一些datetime数据。我正在使用带有pymssql的Python脚本连接到数据库并执行查询 我遇到的问题是,当我的查询返回datetime数据时,日期会发生偏移,不再准确。例如,我的表中的一个数据项是日期“2012-03-27”,但当我检索它并将其作为Python中的datetime对象存储在脚本中时,该日期将存储为“2012-01-03” 有没有办法解决这个问题?我应该使用像pytz这样的库吗 谢谢 我仍然不确定是什么导致了这个问题,但我找到了一个解

我有一个SQL Server表,其中包含一些
datetime
数据。我正在使用带有
pymssql
的Python脚本连接到数据库并执行查询

我遇到的问题是,当我的查询返回datetime数据时,日期会发生偏移,不再准确。例如,我的表中的一个数据项是日期“2012-03-27”,但当我检索它并将其作为Python中的
datetime
对象存储在脚本中时,该日期将存储为“2012-01-03”

有没有办法解决这个问题?我应该使用像
pytz
这样的库吗


谢谢

我仍然不确定是什么导致了这个问题,但我找到了一个解决方案:在执行查询时,将
datetime
数据转换为
varchar
类型:

select convert(varchar(20),event_time,120) from event_detail;
之前我正在执行此查询:

select event_time from event_detail;

其中
event\u time
类型为
datetime

我与pymssql版本1.02有相同的问题。虽然这不是最干净的方法,但我使用OP建议的解决方法,并使用dateutil.parser模块将字符串值转换为具有正确值的python datetime对象。以下是我正在使用的代码,前提是iso_datetime_字符串包含由解决方案返回的日期时间为iso格式的字符串:

import dateutil.parser as ps

correct_datetime_obj = ps.parse(iso_datetime_string)

这似乎不可思议。3月27日到1月3日的“转换”不可能是时区问题。我看不远。你能把相关的代码部分从你获取日期的地方粘贴到你存储日期的地方吗?你显然看到了错误的数据。提供代码。除非我脑子里发生了什么事情(虽然经常发生!),否则这种情况不应该发生。但是事情发生了。你已经彻底检查了你的代码。请发布你的代码!我想了很久你的问题,现在假设它是一个有趣的案例,最终进入了死胡同!出于好奇,我想看到你拼命地编写代码。这看起来像一个月一天的开关,悄悄地传递错误。3/27某处正在变为27/3,那么27太大的月份将变为1(即空)。我猜在某种情况下,字符串的转换正在传递到SQL。