Only filter my time in SQL Server where 子句
Only filter my time in SQL Server where clause
我是 SQL 和一般编程的新手。我有一个日期时间字段,我想用它来过滤我的结果,但仅限于时间部分。
例如,我需要 运行 从昨天下午 2 点到今天早上 7 点的报告。我无法对日期进行硬编码,因为此报告需要每天 运行。此查询将 运行 自动来自存储过程。
我试过 AND clm.createDtTm > DATEADD(d, -1, GETDATE()),它可以追溯到一天,但不是我需要的时间范围。
我试过这个:AND (datepart(hh, '11:02:54.107') = 7)<--老实说我什至不确定我在这里做什么。
我不确定这是否可能,但如果我能得到前一天的结果,我假设必须有一种方法可以将那一天的时间缩短到几个小时之间。
如有任何帮助,我们将不胜感激。
谢谢,
阿卜杜勒
我建议这样:
SELECT(DATEADD(d,-1,GETDATE()))
FROM table
WHERE (DATEADD(d,-1,GETDATE())) = rowloadtimestamp
HAVING DATEPART(HH,rowloadtimestamp) BETWEEN 13 AND 24
UNION
SELECT GETDATE()
FROM table
WHERE GETDATE() = rowloadtimestamp
HAVING DATEPART(HH,GETDATE()) BETWEEN 1 AND 7
假设您有一个 rowloadtimestamp 字段,这应该适合您。
这应该可以解决问题,它会过滤掉不在从昨天晚上 7 点到今天早上 7 点的日期间隔内的行。
WHERE
createDtTm >= DATEADD(HOUR, 14,CAST(DATEADD(DAY,-1, CAST(GETDATE() AS DATE)) AS DATETIME))
AND createDtTm <= DATEADD(HOUR, 7, CAST(CAST(GETDATE() AS DATE) AS DATETIME))
“我不能对日期进行硬编码”是什么意思?你的意思是时间间隔是可变的,还是固定的,或者你指的是确切的日期?我不确定我是否理解。
在 MySQL 的情况下,您可以执行以下操作:
SELECT data, date FROM table WHERE date < DATE_SUB(NOW(), INTERVAL 2 DAY);
此查询将为您提供过去两天的信息。如果您的情况可行,您可以通过用变量替换“2”来改变间隔。
我是 SQL 和一般编程的新手。我有一个日期时间字段,我想用它来过滤我的结果,但仅限于时间部分。
例如,我需要 运行 从昨天下午 2 点到今天早上 7 点的报告。我无法对日期进行硬编码,因为此报告需要每天 运行。此查询将 运行 自动来自存储过程。
我试过 AND clm.createDtTm > DATEADD(d, -1, GETDATE()),它可以追溯到一天,但不是我需要的时间范围。
我试过这个:AND (datepart(hh, '11:02:54.107') = 7)<--老实说我什至不确定我在这里做什么。
我不确定这是否可能,但如果我能得到前一天的结果,我假设必须有一种方法可以将那一天的时间缩短到几个小时之间。
如有任何帮助,我们将不胜感激。
谢谢,
阿卜杜勒
我建议这样:
SELECT(DATEADD(d,-1,GETDATE()))
FROM table
WHERE (DATEADD(d,-1,GETDATE())) = rowloadtimestamp
HAVING DATEPART(HH,rowloadtimestamp) BETWEEN 13 AND 24
UNION
SELECT GETDATE()
FROM table
WHERE GETDATE() = rowloadtimestamp
HAVING DATEPART(HH,GETDATE()) BETWEEN 1 AND 7
假设您有一个 rowloadtimestamp 字段,这应该适合您。
这应该可以解决问题,它会过滤掉不在从昨天晚上 7 点到今天早上 7 点的日期间隔内的行。
WHERE
createDtTm >= DATEADD(HOUR, 14,CAST(DATEADD(DAY,-1, CAST(GETDATE() AS DATE)) AS DATETIME))
AND createDtTm <= DATEADD(HOUR, 7, CAST(CAST(GETDATE() AS DATE) AS DATETIME))
“我不能对日期进行硬编码”是什么意思?你的意思是时间间隔是可变的,还是固定的,或者你指的是确切的日期?我不确定我是否理解。
在 MySQL 的情况下,您可以执行以下操作:
SELECT data, date FROM table WHERE date < DATE_SUB(NOW(), INTERVAL 2 DAY);
此查询将为您提供过去两天的信息。如果您的情况可行,您可以通过用变量替换“2”来改变间隔。