Sql 如何将40000个更新查询合并为一个?

Sql 如何将40000个更新查询合并为一个?,sql,ms-access,Sql,Ms Access,我需要创建一个新的数据列,在我的数据中每隔15分钟分配一个新的数字。大约有40000个15分钟的时间箱需要分配。。。这是我到目前为止所拥有的 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#

我需要创建一个新的数据列,在我的数据中每隔15分钟分配一个新的数字。大约有40000个15分钟的时间箱需要分配。。。这是我到目前为止所拥有的

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#);
时间垃圾箱将增加到40000个


有什么想法吗?

尝试将
[Groupers final no summer].[DateTimeEDT]
中的值从开始时间开始转换为秒,然后您可以:

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

尝试将
[Groupers final no summer].[DateTimeEDT]
中的值从开始时间起转换为秒,然后您可以:

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

此查询根据15分钟的时间间隔计算时间段。它用于返回两个时间戳之间的秒数。如果您没有使用mysql,您的rdbms很可能有一些等效的东西,例如SQL Server

在运行更新查询之前,您可以将其作为选择查询进行尝试,以验证结果是否正确:

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

此查询根据15分钟的时间间隔计算时间段。它用于返回两个时间戳之间的秒数。如果您没有使用mysql,您的rdbms很可能有一些等效的东西,例如SQL Server

在运行更新查询之前,您可以将其作为选择查询进行尝试,以验证结果是否正确:

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

好的,我终于做到了

我使用CVDate()将日期/时间转换为朱利安日历,并将其作为一个新列。然后,我使用[Julian date/time]/(15/(60*24))进行转换,以计算我在另一列中拥有的15分钟时间单元的数量,然后调用我的第一个日期/时间0,并通过

Int([15分钟时间间隔]-3711251)

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

我希望这是有意义的


我很高兴解决了这个问题,我不想不说谢谢就离开这个帖子。

好的,下面是我最终如何做到的

我使用CVDate()将日期/时间转换为朱利安日历,并将其作为一个新列。然后,我使用[Julian date/time]/(15/(60*24))进行转换,以计算我在另一列中拥有的15分钟时间单元的数量,然后调用我的第一个日期/时间0,并通过

Int([15分钟时间间隔]-3711251)

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

我希望这是有意义的


我很高兴解决了这个问题,我不想不说谢谢就离开这个帖子。

如果我理解正确,您希望为每15分钟的间隔分配一个唯一的数字。是吗?唯一的问题是,将有多个数据点具有相同的15分钟时间仓位值(这是我想要的)。因此,如果我有18个数据点在8:45和9:15之间,它们都会被分配到数字1,那么9:15和9:30之间的任何数据点都被分配到数字2,等等。如果我理解正确,你想给每个15分钟的间隔分配一个唯一的数字。是吗?唯一的问题是,将有多个数据点具有相同的15分钟时间仓位值(这是我想要的)。如果我有18个数据点在8:45到9:15之间,它们都会被分配到数字1,那么9:15到9:30之间的任何数据点都会被分配到数字2,等等,好的,我会试试这个。我正在使用Microsoft Access SQLAccess支持DateDiff。好的,我试试这个。我正在使用Microsoft Access SQLAccess支持DateDiff。