【问题标题】:How to get sqlalchemy storing datetime as julianday in sqlite?如何让sqlalchemy在sqlite中将日期时间存储为julianday?
【发布时间】:2010-11-26 00:05:12
【问题描述】:

我不喜欢 SQLAlchemy 如何使用 sqlite 数据库处理日期时间值。它以纯字符串格式存储值。同时 sqlite 推荐使用 julianday 来存储日期时间值。

有没有一种简单的方法可以在这里改变 SQLAlchemy 的行为?

附言。我要担心吗?可能没有人因为没有必要而处理 julianday 吗?

【问题讨论】:

    标签: sqlite sqlalchemy


    【解决方案1】:

    实际上并不是 SQLAlchemy 将日期存储为纯字符串; SQLite 本身does not support date types。从一开始就理解这一点很重要; Sqlite 使用provide some functions 处理日期,但这些日期存储为文本。这就是为什么 SQLAlchemy 在将日期转换为 Python 的日期时间类型和从 Python 的日期时间类型转换方面发挥了一些魔力的原因:根据 SQLAlchemy's documentation:

    SQLite 没有内置 DATE, TIME 或 DATETIME 类型和 pysqlite 不提供开箱即用 转换值的功能 在 Python 日期时间对象和 SQLite 支持的格式。 SQLAlchemy 的 自己的 DateTime 和相关类型提供 日期格式化和解析 使用 SQlite 时的功能。这 实现类是 SLDateTime, SLDate 和 SLTime。这些类型 将日期和时间表示为 ISO 格式化的字符串,这也很好 支持订购。没有依赖 在这些典型的“libc”内部 函数,所以历史日期是 完全支持。

    至于使用儒略历而不是公历。你确定你想要那个吗?您可能是指公历日期吗?

    【讨论】:

    • 这不是真的。 SQLite 本身确实支持日期类型。它们只是以一种奇怪的方式实现:sqlite.org/lang_datefunc.html
    • 这些实际上不是数据类型,而是操作标量字符串的函数,这些字符串恰好代表日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2011-12-25
    • 2010-11-26
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多