string - 可以直接比较存储为字符串/文本的日期吗?

标签 string sqlite datetime comparison

我在 SQLite 中工作,所以我只将日期存储为文本。

YYYY-MM-DD hh:mm:ss

据我所知,我应该能够对它们进行排序或相互比较,就像它们不用担心日期函数一样,因为任何递增都是从右开始向左移动,就像数字一样,所有的值都是数字,非数字字符始终是标准化的,我使用的是 24 小时制。

我经常在网上看到人们提到如何将日期作为文本进行转换以进行任何比较,但我不明白为什么他们不能按原样工作,只要它们处于最大 -> 最小的顺序.显然我不会做数学,但是 Select DateTime From Table where DateTime > 2010-04-21 15:34:55 应该是完全可靠的,对吧?

有没有我没有想到的异常?

最佳答案

这很好用。与许多其他数据库一样,SQLite 没有实际的 DATE(或 DATETIME)数据类型。您的选择是将日期存储为可以正确排序的字符串格式(YYYY-MM-DD 或 YYYY-MM-DD hh:mm:ss),或者将日期转换为数字并存储。

如果您使用字符串格式,那么您当然必须包含引号:

SELECT DateTime FROM Table WHERE DateTime > '2010-04-21 15:34:55'

关于string - 可以直接比较存储为字符串/文本的日期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5446181/

相关文章:

java - 解释 Java 字符串

java - 验证字符串输入的一部分以确保为某些索引输入字母或数字

android.database.sqlite.SQLiteException : near ")": syntax error (code 1)

c++ - 在 C++/boost 中将日期时间转换为不同的时区

datetime - Hive 中的高效日期案例逻辑

php - 用MySQL统计两个表之间字符串重复的次数

寻找长度为 k 的第一个重复子串的算法

swift - Sqlite.Swift 不明确的列名 Swift

c# - DBMetal 为 sqlite_sequence 生成无效类

SQL Server 如何跨时区持久化和使用时间