使用torndb python格式化日期时间

2024-06-01 07:50:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的查询,可以将VARCHAR列转换为datetime(我在这里提供的查询甚至是一个简单的版本,说明了这个问题)。直接在mysql中执行时,查询按预期运行:

mysql> SELECT STR_TO_DATE('01:35 PM', '%h:%i %p') as t;
+----------+
| t        |
+----------+
| 13:35:00 |
+----------+

但是,当我在torndb中运行完全相同的查询时:

^{pr2}$

我得到以下警告(conn的构造正确使用torndb.连接)公司名称:

/Library/Python/2.7/site-packages/torndb.py:226: Warning: Incorrect datetime value: '01:35 PM' for function str_to_date
  return cursor.execute(query, kwparameters or parameters)
>> None

进一步研究mysqldb,问题似乎与之相关:

conn = db.connect("localhost", 'xxx')
c = conn.cursor()
c.execute("SELECT STR_TO_DATE('01:35 PM', '%%h:%%i %%p') as t")
main:1: Warning: Incorrect datetime value: '01:35 PM' for function str_to_date
1L

但是,当我删除双%%时,效果很好:

c.execute("SELECT STR_TO_DATE('01:35 PM', '%h:%i %p') as t")
1L
c.fetchone()
(datetime.timedelta(0, 48900),)

不知道这是怎么回事。。。在


Tags: toforexecutedatetimedatevalueasmysql
1条回答
网友
1楼 · 发布于 2024-06-01 07:50:08

Torndb打开SQL模式“传统”,这在mysql服务器上启用了许多选项。其中包括NO-uzero-unu-DATE和NO-uzero-IN-DATE,这使得服务器对无效的日期和日期时间更加严格。在本例中,STR_TO_DATE应该返回一个时间,而不是一个DATETIME,因此它不应该受到影响,但是在内部它似乎触发了对时间戳的缺失日期部分的某种检查。这看起来像是mysql中的一个bug。最简单的解决方法是不使用传统模式(或者至少取消设置NO_ZERO_IN_DATE标志)。在

相关问题 更多 >