【发布时间】:2017-04-27 10:12:47
【问题描述】:
我需要编写一个 Informix 查询,它将获取除所有星期的星期五和星期六之外的表的所有记录以及一周中所有日子的下午 4 点到晚上 8 点之间的数据
例如:
如果我的表中有以下记录
Name ProcessStartTime Status
Name1 2017-04-01 17:00:02.000 SUCCESS(Saturday)
Name2 2017-04-02 21:00:02.000 SUCCESS(Sunday)
Name3 2017-04-03 01:00:02.000 SUCCESS(Monday)
Name4 2017-04-04 05:00:02.000 SUCCESS(Tuesday)
Name5 2017-04-05 18:00:02.000 SUCCESS(Wednesday)
Name6 2017-04-05 15:00:02.000 SUCCESS(Wednesday)
Name7 2017-04-06 23:00:02.000 SUCCESS(Thursday)
Name8 2017-04-07 15:00:02.000 SUCCESS(Friday)
如果我执行查询,我应该只得到以下记录,
Name2 2017-04-02 21:00:02.000 SUCCESS(Sunday)
Name3 2017-04-03 01:00:02.000 SUCCESS(Monday)
Name4 2017-04-04 05:00:02.000 SUCCESS(Tuesday)
Name6 2017-04-05 15:00:02.000 SUCCESS(Wednesday)
Name6 2017-04-06 23:00:02.000 SUCCESS(Thursday)
并且不应提取剩余的数据,因为这些记录是星期五或星期六以及下午 4 点到晚上 8 点之间的日期时间(不仅是星期五和星期六,而且是一周中的所有日子)。
我在下面有我的 SQL Server 查询,它在 SSMS 中运行良好,
SET DATEFIRST 1
SELECT Name, ProcessStartTime, Status
FROM @events
WHERE datepart(DW, ProcessStartTime) NOT IN (5,6)
AND (datepart(hh, ProcessStartTime) < 16
OR
ProcessStartTime > DATEADD(dd, DATEDIFF(dd, 0, ProcessStartTime), '08:00:00'))
GO
但我需要将此查询更改为 Informix 查询。我在谷歌上搜索了很多以找到获得该方法的方法,但没有任何效果。谁能帮我解决这个问题?
【问题讨论】:
-
应该包括还是排除 20:00:00?是“从 16:00 到 20:00 之前”吗?还是“从 16:00:00.00000 到并包括 20:00:00.00000”?还是别的什么?
标签: sql-server informix datepart