我有一个名为'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