计算 Unix 纪元时间是不是出现在今天的 SQLite 查询
Posted
技术标签:
【中文标题】计算 Unix 纪元时间是不是出现在今天的 SQLite 查询【英文标题】:SQLite query that calculates if Unix epoch time occurs on today's date计算 Unix 纪元时间是否出现在今天的 SQLite 查询 【发布时间】:2011-07-03 15:54:56 【问题描述】:我有一个包含 Unix 纪元时间值的整数列。我想计算它是否在今天之内。
例如,假设今天是该月的第 24 天。查询应返回 24 日的行,而不是 23 日或之前某个时间的行。
感谢收看。
【问题讨论】:
【参考方案1】:您可以为此使用儒略日,因为它可以“四舍五入”到日期边界。见http://www.sqlite.org/lang_datefunc.html
【讨论】:
我不确定如何处理 Julian 日期。我对它的定义很困惑:“自公元前 4714 年 11 月 24 日格林威治中午以来的天数” 好吧,儒略日意味着整数部分表示天数(这使得计算时间/日期差异非常容易),小数部分表示当天的小时、分钟、秒。因此,如果您将“今天”的整数部分检索为 Julian Day,并对已有的纪元时间执行相同操作,则很容易确定它是否是同一天,即今天;) 啊,好吧……有道理! 如果返回 0 则纪元值落在今天的日期:SELECT (ROUND(strftime('%J', 'SOME_EPOCH_VALUE') - 0.5) - ROUND(julianday('now') - 0.5 ) 儒略日从中午开始而不是午夜(这对天文学家更有用)。如果你想要一个基于午夜的日期,你必须加或减 0.5。【参考方案2】:使用DATE(TheColumn, 'unixepoch')
获取日期。
【讨论】:
【参考方案3】:用 mysql 试试:
SELECT *
FROM yourTable
WHERE DATE(FROM_UNIXTIME(yourUnixEpochField)) = DATE(NOW());
【讨论】:
太糟糕了,这个问题是关于 SQLite 的......(尽管这是一个 MySQL 问题,但我仍然不会赞成这个答案,因为该查询不可索引)。以上是关于计算 Unix 纪元时间是不是出现在今天的 SQLite 查询的主要内容,如果未能解决你的问题,请参考以下文章
在 MS Access SQL 查询中从普通日期转换为 unix 纪元日期
使用 sql 将字符串纪元代码从 unix 时间戳转换为日期