请教:取得表中上下两条数据的差值,有什么好办法吗?请赐教!

Hasen 2005-09-28 12:33:24

有如下的表Table1
--------------------------------------------------
receiveTime KwPower
2005-07-01 00:03:32 140.50
2005-07-02 00:01:01 200.00
2005-07-03 00:11:30 294.00
2005-07-04 00:01:00 381.50
2005-07-05 00:02:10 438.50
2005-07-06 00:09:04 622.00

请教:如果想得到如下的查询结果,怎么写SQL语句呀?
--------------------------------------------------
thisMonth KwPower (KwPower即一个月中每天0点功率的差)
01 59.50
02 94.00
03 87.50
04 57.00
... .....
... .....
...全文
169 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
doway 2005-09-30
  • 打赏
  • 举报
回复
没有这样的东西,因为没有 Date 类型,也没有 Time 类型,只有 DateTime。:)
loveflea 2005-09-30
  • 打赏
  • 举报
回复
mysql> select left('2005-08-20 12:45:40.011',10);
+------------------------------------+
| left('2005-08-20 12:45:40.011',10) |
+------------------------------------+
| 2005-08-20 |
+------------------------------------+
1 row in set (0.24 sec)

mysql> select from_days(to_days('2005-08-20 12:45:40.011'));
+-----------------------------------------------+
| from_days(to_days('2005-08-20 12:45:40.011')) |
+-----------------------------------------------+
| 2005-08-20 |
+-----------------------------------------------+
1 row in set (0.06 sec)

mysql> select date_format('2005-08-20 12:45:40.011','%Y-%m-%d');
+---------------------------------------------------+
| date_format('2005-08-20 12:45:40.011','%Y-%m-%d') |
+---------------------------------------------------+
| 2005-08-20 |
+---------------------------------------------------+
1 row in set (0.07 sec)
doway 2005-09-29
  • 打赏
  • 举报
回复
dayofmonth?

有其他月份的数据的话还行吗?
helpall 2005-09-29
  • 打赏
  • 举报
回复
在MySQL中运行通过:
//create table tt (d datetime,power float)
/* insert into tt values
('2005-07-01 00:03:32',140.50),
('2005-07-02 00:01:01',200.00),
('2005-07-03 00:11:30',294.00),
('2005-07-04 00:01:00',381.50),
('2005-07-05 00:02:10',438.50),
('2005-07-06 00:09:04',622.00);
*/

select dayofmonth(a.d), b.power - a.power as KwPower
from tt a, tt b
where dayofmonth(a.d) = dayofmonth(b.d)-1
Hasen 2005-09-29
  • 打赏
  • 举报
回复
再请教一个问题:

SQL中的日期类型总是显示"2005-08-20 12:45:40.011"这样的时间,怎样用SQL语句取到其Date,用DATEPART ( datepart , date ) DATEPART()可以取year、month等,但怎样取得日期"2005-08-20"呢?
Hasen 2005-09-29
  • 打赏
  • 举报
回复
以上各位朋友的方法各有优点,试过后马上给分(虽然分不多 :)

谢谢。
doway 2005-09-28
  • 打赏
  • 举报
回复
最好的方法是查询结果返回到应用程序中处理。

一定要用 SQL 解决的话,关键问题的日期操作。下边是一个可行的方法(SQL Server):

SELECT DatePart(t1.recivetime, d) AS thisMonth, t1.KwPower - t2.KwPower AS KwPower
FROM tab1 t1, tab2 t2
WHERE DatePart(DateAdd(t1.recivetime, 1, d), yyyy) = DatePart(t2.recivetime, yyyy)
AND DatePart(DateAdd(t1.recivetime, 1, d), m) = DatePart(t2.recivetime, m)
AND DatePart(DateAdd(t1.recivetime, 1, d), d) = DatePart(t2.recivetime, d)
AND ...加上你的其他条件...

没有数据,不便测试,大概差不厘儿。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧