我想从我在codeigniter(mysql)中的数据库表中选择最近三天的数据
Posted
技术标签:
【中文标题】我想从我在codeigniter(mysql)中的数据库表中选择最近三天的数据【英文标题】:i want to pick last three days data from my database tables in codeigniter (msql) 【发布时间】:2018-06-18 23:49:27 【问题描述】:我的数据库中有表,我想从我的 3 个不同的数据库表中选择最后三天的数据,我还想显示数据是否相同,那么它将显示结果,否则在 codeigniter 中显示空行。
我所有的表都是这样的 ==>
id temp hum rain time
1 16 62 NR 2018-01-05 11:00:23
2 17 62 NR 2018-01-06 11:00:22
3 17 61 NR 2018-01-07 11:00:22
4 16 60 NR 2018-01-08 11:00:23
【问题讨论】:
"我还想显示数据是否相同,那么它将显示结果,否则在 codeignter 中显示空行。"你的这部分问题不清楚。你能澄清你想要什么。也许提供一些示例数据以及查询的预期输出是什么? 如果我的所有 3 个表数据都相同,那么它将显示结果,否则显示空行接受我所有的表看起来像这样 ==> id temp hum rain time 1 16 62 NR 2018-01-05 11:00:23 2 17 62 NR 2018-01-06 11:00:22 3 17 61 NR 2018-01-07 11:00:22 4 16 60 NR 2018-01-08 11:00:23 您刚刚在问题中重复了同一句话。您必须以没有先验知识的其他人可以理解的方式更详细地重新表述这个问题。您在答案中发布了数据。该答案将被删除。您需要使用数据编辑您的问题,并且您还需要对其进行格式化。将这些数据作为 sql 插入语句会更好。 @Goose 你明白我的问题还是仍然困惑? 【参考方案1】:您可以找到 mysql 日期和时间函数列表here。这个问题有趣的是DATEDIFF()
,它以天为单位返回两个日期之间的差异。
到目前为止,如果您已经显示了您的 SQL 语句会很有帮助,但我猜它是这样的:
SELECT * from my_table
要仅选择日期在特定范围内的行,使用WHERE
。在这种情况下,我们只需要距离现在不到三天的行:
SELECT * from my_table WHERE DATEDIFF(NOW(), my_table.time) < 3
您可能需要进行一些试验才能获得您想要的结果,具体取决于您希望如何结束日子。
如果你想在三天内得到结果到第二个,你可以使用相同的想法,但带有时间戳:
SELECT * from my_table WHERE (CURRENT_TIMESTAMP() - 60*60*24*3) < UNIX_TIMESTAMP(my_table.time)
60*60*24*3 是三天的秒数。
【讨论】:
但是我怎样才能从我的三个表中获取相同的数据? 如果所有表都相同(这就引出了为什么有三个表的问题),您可以使用UNION
来组合对所有三个表的查询结果。由于您没有显示表之间的关系是什么,我无法猜测您还有哪些其他选择。
请为我写查询以轻松理解您的答案,我所有三个表的格式相同但名称不同。
就是上面三个select语句,加上UNION
-UNION documentation所以就变成了`SELECT bla bla bla UNION SELECT bla bla bla UNION SELECT bla bla bla以上是关于我想从我在codeigniter(mysql)中的数据库表中选择最近三天的数据的主要内容,如果未能解决你的问题,请参考以下文章
我想从我自己的服务器而不是 java worldwind 中的 nasa 服务器获取数据