Sqlite dd/mm/yyyy格式.如何避免转换



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

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

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

虽然SQLite没有真正的本机日期/日期时间类型(在我看来这是一个很大的遗漏),但它确实有3种允许的格式:TEXT, REAL或INTEGER,它们仍然(在某种程度上)被视为本机日期时间格式,并且上面列出的所有优点仍然适用。

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

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

最新更新