MySQL的SELECT使用WHERE'之间

MySQL的SELECT使用WHERE'之间

问题描述:

我已经具有相同的结构serveral的数据库:MySQL的SELECT使用WHERE'之间

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; 

有什么不对?

+0

那么,您发现从日期和时间段转换为日期的Google搜索结果是什么?谷歌我的意见重新搜索问题的许多措辞/版本。另外,“失败”是什么意思?请按照[mcve]采取行动。 PS您可能不希望SQL之间'因为它是包容性的。 – philipxy

+0

我发现了几个不同的版本和使用的记录的例子,但他们没有为我工作,或者我用他们错误的方式。失败的人是这样的:[代码:1064,SQL状态:42000]你的SQL语法错误;检查对应于您的MariaDB服务器版本的手册,以找到在'WHERE'timestamp'BETWEEN UNIX_TIMESTAMP('16 -27-03 23:45'))和UNIX_TIMESTAMP('''在第5行附近使用' – Mircsicz

+0

'附近没有选择以匹配第二个代码块中的最终位置请注意,froms&any连接和任何位置通常缩进相同的数量。请参阅我的编辑to your froms。将来删除内容直到您没有收到错误为了本地化,每个** [mcve] **你仍然在这里丢失PS编辑你的问题,不要在评论中澄清 – philipxy

什么是错的,是我在错误的地方放置在WHERE & BETWEEN,这是它是如何工作对我来说:

SELECT CONCAT(t.`dsid` ,' - ', t.`dsid` - 1) AS `DSIDs` , t.`value` - (SELECT `value` 
      FROM `MYDB` 
      WHERE `dsid` = t.`dsid` - 1 * 20) AS `kWh`, 
      tag, dsid, value, 
      FROM_UNIXTIME(timestamp, '%y-%m-%d %H:%i') as time 
FROM `MYDB` t 
WHERE timestamp 
BETWEEN UNIX_TIMESTAMP('16-08-01') AND UNIX_TIMESTAMP('16-08-31 23:59:59') 

可能不是这样做的最有效的方法..