Django将字符串自动转换为日期时间

时间:2016-06-22 05:44:08

标签: python django sqlite datetime

使用SQLite进行测试时,Django会在保存到数据库时自动将字符串转换为日期时间,但会丢弃无效字符串的更新而不会出错。所有Django数据库后端的这种行为是否一致?这记录在哪里?另外,如何确定我从外部源(不是Django表单)收到的字符串形式的日期时间是否对Django的数据库有效?

查看代码,django.utils.dateparse.parse_datetime似乎是Django在其SQLite数据库后端中使用的内容。其他数据库后端似乎不使用它,也不与Django表单使用的DATETIME_INPUT_FORMATS交互。

1 个答案:

答案 0 :(得分:2)

  

SQLite没有为存储日期留出的存储类   和/或时间。相反,SQLite的内置日期和时间函数   能够将日期和时间存储为TEXT,REAL或INTEGER   值

https://www.sqlite.org/datatype3.html#section_2_2

因此,这种行为与PostgreSQL和mysql非常不同,后者恰好具有日期,时间和日期时间的单独数据类型。

所以回答“这个行为在所有Django数据库后端中是否一致?”是没有

这在哪里记录?”参考上面的链接

另外,如何判断我从外部源(不是Django表单)收到的字符串形式的日期时间是否对Django的数据库有效?”这取决于。如果您在从外部来源收到特定日期和时间时遇到问题,我会就此提出一个单独的问题。