我目前设计的程序使用dd/mm/yyyy
日期格式,而Sqlite标准格式是yyyy-mm-dd
。我的程序使用了相当多的使用儒略日('yyyy-mm-dd')的日期计算。我知道我可以通过使用SUBSTR(X,Y)
操作或使用我正在设计数据库前端的语言代码将dd/mm/yyyy
格式转换为yyyy-mm-dd
;但我希望避免这些。任何想法?
您应该始终使用数据库引擎提供的本机日期格式存储日期(和时间戳),原因如下:
- 本机格式允许本机日期算术函数工作。
- 本地格式允许索引一致地适用,因此您可以有效地使用日期比较和使用像BETWEEN这样的操作符。
- 本机格式占用较少的磁盘存储空间。对于SQLite,将日期存储为自公元前4174年以来的实数天数或自1970年1月1日以来的整数秒数需要8个字节。对于您的表示,它至少需要10个字节。
虽然SQLite没有真正的本机日期/日期时间类型(在我看来这是一个很大的遗漏),但它确实有3种允许的格式:TEXT, REAL或INTEGER,它们仍然(在某种程度上)被视为本机日期时间格式,并且上面列出的所有优点仍然适用。
当你需要在应用程序中显示日期时,你应该使用脚本或其他编程语言提供的库,这些库知道如何以所需的格式显示日期。
换句话说,使用数据库来存储、比较和检索数据,并使用应用程序以所需的格式呈现数据。