计算 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 时间戳转换为日期

在 Informix 中将 DATETIME 转换为 Unix 纪元

如何从 Oracle 日期获取 unix 纪元?

将 UNIX 纪元转换为日期对象

如何从 postgres 获取时间戳作为 Unix 纪元?