如何提取数据时,日期是7am或7pm?



我有一个名为'Date'的SQL数据库表列,格式为:2022-06-06 00:00:00.0000000

我想知道如何提取数据时,日期是在上午7点和晚上7点。我想使用"喜欢"函数,但我不知道提取数据的条件。

样本数据:

CHAMBER_LIST    DATE    TEMPERATURE HUMIDITY    Z1_VOL  Z1B_VOL Z1C_VOL Z1_CUR  Z1B_CUR Z1C_CUR Z2_VOL  Z2B_VOL Z2C_VOL Z2_CUR  Z2B_CUR Z2C_CUR Z3_VOL  Z3B_VOL Z3C_VOL Z3_CUR  Z3B_CUR Z3C_CUR Z4_VOL  Z4B_VOL Z4C_VOL Z4_CUR  Z4B_CUR Z4C_CUR Z5_VOL  Z5B_VOL Z5C_VOL Z5_CUR  Z5B_CUR Z5C_CUR Z6_VOL  Z6B_VOL Z6C_VOL Z6_CUR  Z6B_CUR Z6C_CUR
SG_QRA_SGHAST_0043  2022-06-06 00:00:00.0000000 110.01  84.94   3.6 1.26    13.2    0   0   0   3.6 1.26    13.2    0   0   0   3.6 1.26    13.2    0   0   0   3.6 1.26    13.2    0   0   0   3.6 1.26    13.2    0   0   0   3.6 1.26    13.2    0   0   0
SG_QRA_SGHAST_0044  2022-06-06 00:00:00.0000000 109.98  85.02   3.6 1.95    1.17    0.06    1.2 0.17    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0                       
SG_QRA_SGHAST_0046  2022-06-06 00:00:00.0000000 110.02  84.94   3.6 1.95    1.17    0   0.2 0.25    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

我想要的结果是每天在早上7点和晚上7点从实时数据库表中提取一行数据。

What I tried:FROM table_name WHERE Date LIKE '%s%s%s%s%s%s%s%s%s%s 07:00:00'

首先说明应该避免使用SQL关键字作为表名或列名,因此请将列重命名为"date"如果可能的话。

一个重要的问题是:你真的想每天检查两秒钟吗?即使这是来自气象站的每小时出现一次的数据,你确定数据总是准确地得到这个时间,不会延迟一到两秒钟吗?

无论如何,让我们在这里列出一些如何查看时间的选项。在我的示例中,该列被命名为" dateccolumn "这个表被命名为test。当然,您可以将其更改为您的命名

如果只需要检查小时而不需要检查分钟或秒,则可以使用DATEPART:

SELECT datecolumn FROM test 
WHERE DATEPART(HOUR,datecolumn) IN (7,19)

结果将是从07:00:00到07:59:59和从19:00:00到19:59:59之间的所有内容。

让我们检查分钟是否为0:

SELECT datecolumn FROM test 
WHERE DATEPART(HOUR,datecolumn) IN (7,19)
AND DATEPART(MINUTE,datecolumn) = 0

结果将是从07:00:00到07:00:59和从19:00:00到19:00:59之间的所有内容。

如果您真的只想获取07:00:00和19:00:00的数据,您仍然可以使用DATEPART:

SELECT datecolumn FROM test 
WHERE DATEPART(HOUR,datecolumn) IN (7,19)
AND DATEPART(MINUTE,datecolumn) = 0
AND DATEPART(SECOND,datecolumn) = 0

既然这篇文章有点长,不好读,你应该考虑换一种方式。也许你更喜欢这样做:

SELECT datecolumn FROM test
WHERE CAST(datecolumn AS TIME) IN ('07:00:00','19:00:00')

我想这是解决你最初问题的捷径了。你也可以这样做:

SELECT datecolumn FROM test
WHERE DATEDIFF(SECOND,CAST(datecolumn AS date),datecolumn) IN (25200,68400)

我在这里创建了一个小提琴,它显示了差异,请尝试:

如您所见,有许多选项可以检查这一点。你应该认真考虑哪种选择对你来说是最好的。如果"延迟"几秒钟,那么对精确时间进行非常严格的限制可能会丢失大量数据。你需要决定这是否是有意的。

我使用任务调度和基于

运行数据来解决这个问题。datetime = current_timestamp

相关内容

  • 没有找到相关文章