0

我目前正在设计的程序使用dd/mm/yyyy日期格式,而 Sqlite 标准格式是yyyy-mm-dd. 我的程序使用 julianday('yyyy-mm-dd') 进行了大量的日期计算。我知道我可以通过使用操作或使用我正在设计数据库前端的语言的代码来将dd/mm/yyyy格式转换为;但我希望避免这些。任何想法?yyyy-mm-ddSUBSTR(X,Y)

4

1 回答 1

2

您应该始终使用数据库引擎提供的本机日期格式存储日期(和时间戳),原因如下:

  1. 本机格式允许本机日期算术函数工作。
  2. 本机格式允许索引始终适用,因此您可以有效地使用日期比较并使用像 BETWEEN 这样的运算符。
  3. 本机格式在磁盘上存储的空间更少。对于 SQLite,将日期存储为自公元前 4174 年起的实数天数或自 1970 年 1 月 1 日起的整数秒数需要 8 个字节。对于您的表示,它至少需要 10 个字节。

虽然 SQLite 并没有真正的原生日期/日期时间类型(我认为这是一个很大的遗漏),但它确实有3 种允许的格式:TEXT、REAL 或 INTEGER,它们仍然(在某种程度上)被视为原生日期时间格式,以及所有上述优点仍然适用。

当您需要在应用程序中显示日期时,您应该使用脚本或其他知道如何以所需格式显示日期的编程语言提供的库。

换句话说,使用数据库来存储、比较和检索数据,并使用您的应用程序以所需的格式呈现它。

于 2013-06-15T06:22:12.440 回答