2010-08-19 47 views
1

我需要创建一个新的数据列,每15分钟在我的数据中分配一个新的数字。大约有40,000个15分钟的时间分配......这是我迄今为止所拥有的。如何将40000个更新查询合并为一个?

UPDATE [Groupers final no summer] 
SET [Groupers final no summer].[Fifteen min time bin daily] ='1', 
WHEN [Groupers final no summer].[DateTimeEDT]=Between #11/02/05 08:45:01# 
    and #11/02/05 09:00:00#) 
OR 
SET [Groupers final no summer].[Fifteen min time bin daily] ='2', 
WHEN [Groupers final no summer].[DateTimeEDT]=Between #11/02/05 09:00:01# 
    and #11/02/05 09:15:00#); 

而且时间二进制数将上升至40,000人。

任何想法?

+0

如果我理解正确,您希望为每个15分钟的间隔分配一个唯一的号码。是对的吗? – 2010-08-19 15:15:26

+0

是的,没错。 – Vezzerina 2010-08-19 15:20:36

+0

唯一的是,将有多个达达点与相同的十五分钟时间仓值(这是我想要的)。因此,如果我在8点45分到9点15分之间有18个数据点,它们将被分配数字1,然后在9点15分和9点30分之间的任何数据点被分配数字2等。 – Vezzerina 2010-08-19 15:32:13

回答

1

OK,这里是如何我终于做到了!

我使用CVDate()将日期/时间转换为儒略历,并创建了一个新列。然后我使用[Julian date/time] /(15 /(60 * 24))转换来计算另一列中15分钟时间段的数量,然后调用我的第一个日期/时间0并计算十五分钟时间段在通过执行

INT([15个微小时间间隔] -3711251)

其中3711251是我的实际开始时间之前的第一个15分钟整数整数。

我希望这是有道理的......

我很高兴已经解决了这个,不想离开这个线程不言谢。

3

尝试打开值[Groupers final no summer].[DateTimeEDT]到秒,因为起始时间,那么你可以:

UPDATE [Groupers final no summer] 
SET [Groupers final no summer].[Fifteen min time bin daily] = timeInSeconds/(15*60) 
0

此查询计算基础上,15分钟的时间间隔的时间仓。它使用TIMESTAMPDIFF来返回两个时间戳之间的秒数。如果你不使用mysql,你的rdbms最有可能具有相同的东西,例如,SQL Server有DATEDIFF

UPDATE [Groupers final no summer] 
    SET [Groupers final no summer].[Fifteen min time bin daily] =((TIMESTAMPDIFF(SECOND, #11/02/05 08:45:01#, DateTimeEDT)/(15*60))+1 

运行更新查询之前,你可以试试这个作为一个选择查询,以验证结果是正确的:

SELECT * FROM [Groupers final no summer], 
((TIMESTAMPDIFF(SECOND, #11/02/05 08:45:01#, DateTimeEDT)/(15*60))+1 AS TimeBin 
+0

OK,我会试试这个。我正在使用Microsoft Access SQL – Vezzerina 2010-08-19 15:43:16

+0

Access支持DateDiff。 http://www.techonthenet.com/access/functions/date/datediff.php – mdma 2010-08-19 16:04:02