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

10 sqlite

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

Nic*_*kis 7

试试这个查询:

SELECT * FROM mytable
WHERE strftime('%m-%d', 'now') = strftime('%m-%d', birthday)
Run Code Online (Sandbox Code Playgroud)


小智 5

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

对于一般日期时间值,请使用Unix Epoch时间戳.易于使用,非常灵活,以及时区(甚至压光!)不可知.(我最近写了一篇关于使用它们的文章,我真的需要插入...)

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

  • 至于将日期存储为YYYMMDD这样的整数,那么有生日日期呢?那个月的生日怎么样?拉出每个日期片段需要很多mod/div操作.在我看来,您最好使用数据库的内置(以及优化和可读)工具,如NickD的答案. (3认同)