如何在SQLite中存储和获取datetime值

时间:2009-09-11 07:22:51

标签: sqlite

我的表包含Birthdate字段,其数据类型为datetime。 我想让所有记录今天过生日。   我怎么能得到它?

3 个答案:

答案 0 :(得分:7)

尝试此查询:

SELECT * FROM mytable
WHERE strftime('%m-%d', 'now') = strftime('%m-%d', birthday)

答案 1 :(得分:5)

有一个特殊的日期时间类型对我来说似乎总是不必要的开销,整数快速,灵活,占用空间更少。

对于一般日期时间值,请使用Unix Epoch时间戳。易于使用,非常灵活,以及时区(甚至压光!)不可知。 (我最近写了an article on using them, which I really have to plug...

也就是说,如果您只对公历中的日期感兴趣,您可能需要使用以下格式的大整数:YYYYMMDD,例如19761203.对于您的特定用法,您甚至可以创建一个四位数整数,如MMDD比方说1703 - 这必须导致快速选择!

答案 2 :(得分:4)

SQLite对存储日期的支持很少。您可以使用上面的Nick D建议的方法,但请记住,此查询将导致全表扫描,因为日期未在SQLite中正确编制索引(实际上SQLite根本不支持日期作为内置类型)。

如果你真的想进行快速查询,那么你必须添加一个单独的(整数)列来存储出生日(1-31)并在数据库中附加一个索引。

如果您只想比较日期,那么您可以添加一个(INTEGER)列来存储日期UTC值(但这个技巧不允许您轻松搜索各个日期组件)。

祝你好运