【发布时间】:2017-12-02 23:51:11
【问题描述】:
我有多个结构相同的数据库:
dsid、标签、时间戳、值
时间戳在 unixtime 中,我可以像这样选择数据来绘制:
SELECT CONCAT(t.`dsid` ,' - ', t.`dsid` - 1) AS `DSIDs`
, t.`value` - (SELECT `value`
FROM `MY-DB`
WHERE `dsid` = t.`dsid` - 1 * 20) AS `kWh`,
tag, dsid, value,
FROM_UNIXTIME(timestamp, '%y-%d-%m %H:%i')
FROM `MY-DB` t limit 10000;
但我想根据“日期之间的位置”结构来选择它,所以我可以选择一个月或一周……甚至更好的“最后”周、月、年(整个日历年或仅过去 12月)。
但如果我这样尝试它会失败:
SELECT CONCAT(t.`dsid` ,' - ', t.`dsid` - 1) AS `DSIDs`
, t.`value` - (SELECT `value`
FROM `MY-DB`
WHERE `dsid` = t.`dsid` - 1 * 20) AS `kWh`,
tag, dsid, value, (FROM_UNIXTIME(timestamp, '%y-%d-%m %H:%i') WHERE 'timestamp' BETWEEN UNIX_TIMESTAMP('16-27-03 23:45')) AND UNIX_TIMESTAMP('16-25-02 00:00')
FROM `MY-DB` t limit 10000;
怎么了?
【问题讨论】:
-
那么你发现谷歌搜索从日期和时间段数转换为日期是什么?谷歌我的 cmets 重新搜索一个问题的许多措辞/版本。另外,“失败”是什么意思?请对minimal reproducible example采取行动。 PS 你可能不想要 SQL
between,因为它是包容性的。 -
我发现了几个不同版本和文档示例的用法,但没有一个对我有用,或者我使用错误的方式。失败意味着:[代码:1064,SQL 状态:42000] 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在 'WHERE 'timestamp' BETWEEN UNIX_TIMESTAMP('16-27-03 23:45')) AND UNIX_TIMESTAMP('' at line 5 附近使用正确的语法
-
没有选择匹配第二个代码块中的最终位置。请注意,froms & any joins & any where 通常缩进相同的数量。请参阅我对您的发件人的编辑。将来切掉一些东西,直到您没有收到错误以对其进行本地化。每 minimal reproducible example 你在这里仍然缺少。 PS编辑你的问题,不要在cmets中澄清。
-
感谢您帮助我解决这个问题,再过 5 分钟就搞定了!
-
嗨。请将您的解决方案作为答案发布,然后在最短的等待时间后接受它,以表明您已找到解决方案。单击“已编辑”链接以获取未格式化的文本。然后点击之前版本的“回滚”。请注意,通常如果像这里的答案结果是存在拼写错误或简单的语法问题,则该问题将被具有足够声誉的后来读者投票关闭(无法获得进一步的答案)。下次记得——MCVE。
标签: mysql unix-timestamp