0

我们正在用 MySql 用 C# 开发一个卡片签到系统。根据用户签到的时间,向用户收取不同的金额。我们有一个价格表,指定全天每小时的价格。当用户签到时,我需要能够知道签到的费用。以下是我的表格:

活动表:

CARD_ID      CLOCK

1            5/26/2013 10:40:47 AM
2            5/26/2013 10:48:50 AM
3            5/26/2013 12:00:00 AM
4            5/26/2013 14:40:20 AM

价格表

TIME         PRICE
00:00        4
01:00        4
02:00        4
03:00        4
04:00        4
05:00        4
06:00        4
07:00        4
08:00        6
09:00        6
10:00        6
11:00        6
12:00        6
13:00        7
14:00        7
15:00        7
16:00        7
17:00        7
18:00        8
19:00        8
20:00        4
21:00        4
22:00        4
23:00        4

我试图在这里找出最好的方法来实现这一点。有没有办法通过查询得到这个?一旦我知道价格,我就可以将它插入到交易表中。非常感谢。

4

2 回答 2

2

尝试这个:

SELECT a.card_id, a.clock, p.price
FROM activity a
INNER JOIN price p
ON HOUR(a.clock) = HOUR(p.time)
于 2013-05-28T02:57:01.980 回答
1
select 
    price,
    CARD_ID,
    clock
from activity a
join price p on  p.time <= TIME(a.clock)
  AND 
TIME(a.clock) < ADDTIME(p.time, '01:00:00')

当您的时间接近小时标记时,这可能无法正常工作,因为我不知道 MySQL 时间比较是如何工作的,老实说,我发现 MySQL 总体上相当粗略。

于 2013-05-28T02:44:06.137 回答