【问题标题】:Invalid datetime format in python-mysql querypython-mysql查询中的日期时间格式无效
【发布时间】:2016-10-14 08:12:35
【问题描述】:

我想从数据库中获取一条记录,该记录的 datetime 字段是主键的一部分。我正在使用 mysqldb packagepython 查询,这会导致错误

日期时间格式无效

其中通过命令行和 mysql 工作台执行相同的查询时工作正常。

我的代码如下所示。

def get_all_list(table_name, modify_dt, params):
    cursr = connections['default'].cursor()
    stmt = 'select * from ' + table_name + ' where ' + params 
    cursr.execute(stmt)
    data = cursr.fetchall()

params 是包含我的主键值的字符串。

例如

params is "join_date = '2016-09-08 00:00:00+00:00'"

我的最终查询看起来与此类似

select * from employee where join_date = '2016-09-08 00:00:00+00:00'

执行时,同样会在 mysql 工作台中提供结果,而当通过我的程序执行时,我收到错误

日期时间值不正确:列的“2016-09-08 00:00:00+00:00” 第 1 行的“join_date”

【问题讨论】:

    标签: python mysql python-2.7 datetime


    【解决方案1】:

    日期格式应该是

    '2016-09-08 00:00:00'
    

    如果需要设置时区,需要单独的SQL查询

    set time_zone='+00:00';
    

    另请参阅:How do I set the time zone of MySQL?


    如果你使用的是django,你可以在设置文件中为整个应用设置time_zone:

    DATABASES['default'] = {
        'ENGINE': 'your_db_engine',
        'NAME': 'my_database',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': 3306,
        'OPTIONS': {
            "init_command": "SET storage_engine=InnoDB; set time_zone='+00:00';",
        },
    }
    

    【讨论】:

    • 谢谢.. 但是我应该在哪里为我的应用设置 time_zone.. 它应该在我的 settings.py 文件中
    • 你在用 django 吗?
    • 嘿.. 感谢上述更新,但我目前没有使用默认存储引擎。此外,当我尝试设置它时,它显示未知系统变量 storage_engine。
    • 当我在 settings.py 中使用 USE_TZ = False 时问题得到解决
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2016-11-24
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多