在我的数据库中,日期以毫秒为单位存储为字符串。如何仅考虑月份和日期查询唯一日期并计算当天共享多少日期?
答案 0 :(得分:0)
如果要存储日期,请使用日期类型。 Sqlite可能没有它。但请,请不要将它用作字符串!我建议你存储整数来存储毫秒sice epoch。使用bindLong()等。不幸的是,你必须自己在代码中进行一些计算。只计算每天的第一个和最后一个毫秒。然后,您将能够使用WHERE时间戳BETWEEN first_day_milisecond和last_day_milisecond,使用偶数索引。 您可以选择时间戳的最小值和最大值,只尝试它们之间的天数。
如果您需要经常或大量数据,我建议将日期存储在多个列中作为年,月,日的整数。取决于你必须做什么与时间,午夜以来的几毫秒。或者更多的小时,分钟,秒和毫秒列。
我认为从一串数字格式化字符串日期比从字符串中解析这些数字要容易得多。在数据库中比较它们肯定更容易。
答案 1 :(得分:0)
除以1000获得秒数,然后使用unixepoch
modifier获取日期,并使用strftime
仅输出年份和月份:
SELECT strftime('%Y-%m', DateMillis / 1000, 'unixepoch'),
COUNT(*)
FROM MyTable
GROUP BY 1