sql - 我的日期筛选器在 SQL Server 中无法正常工作
问题描述
这是我用来在我的 UI 中检索数据的视图。这样做的问题是,当我查看 之间2021-03-09' and '2021-03-17
的数据时,它也会返回结果2021-03-18
。
我调查过Postman
它经过的日期,发现它发送的日期也像startDateTime%20ge%202021-03-08T12:00:00.000Z%20and%20startDateTime%20le%202021-03-17T12:00:00.000Z
返回2021-03-18
数据一样。我不希望它返回第 18 个。有没有办法在脚本中修改。但是如果搜索 2021-03-18 日期范围startDateTime%20ge%202021-03-17T12:00:00.000Z%20and%20startDateTime%20le%202021-03-18T12:00:00.000Z
,它会返回正确的行数。
ALTER VIEW [dbo].[vw_o_sessions]
AS
SELECT DISTINCT
NEWID() AS TUniqueKey,
SNumber AS Sessionid,
CSession,
SStartDateTime AS StartDateTime,
FROM
[vw_o_appointments]
where ClinicCode='abc1'
and SStartDateTime between '2021-03-09' and '2021-03-17'
GROUP BY
SSessionNumber,
CSession,
SStartDateTime,
另一种观点:
ALTER VIEW [dbo].[vw_o_appointments]
AS
SELECT
NEWID() AS TUniqueKey,
CASE
WHEN (PE.EAdmitDateTime IS NOT NULL
AND CAST(PE.EAdmitDateTime AS time) < '12:30') OR
(CAST(PE.ADate AS time) < '12:30')
then convert(varchar(8), isnull(Pe.EAdmitDateTime, PE.ADate),112 ) + '0'
WHEN (PE.EAdmitDateTime IS NOT NULL
AND CAST(PE.EAdmitDateTime AS time) >= '12:30')
OR (CAST(PE.ADate AS time) > '12:30')
then convert(varchar(8), isnull(Pe.EAdmitDateTime, PE.ADate),112) + '1'
ELSE NULL
END AS SNumber,
CONVERT(date, ISNULL(Pe.EAdmitDateTime, PE.ADate)) AS SStartDateTime,
CASE
WHEN (PE.EAdmitDateTime IS NOT NULL
AND CAST(PE.EAdmitDateTime AS time) < '12:30')
OR (CAST(PE.ADate AS time) < '12:30')
THEN 'AM'
WHEN (PE.EAdmitDateTime IS NOT NULL
AND CAST(PE.EAdmitDateTime AS time) >= '12:30')
OR (CAST(PE.ADate AS time) > '12:30')
THEN 'PM'
ELSE NULL
END AS CSession
FROM
(SELECT
PE1.PNumber,
PE1.REncounterId,
PE1.ADate,
PE1.EAdmitDateTime,
PE1.MType
FROM
(SELECT
PNumber,
REncounterId,
ADate,
EAdmitDateTime,
MType
FROM
PEncounter
WHERE
PNumber IS NOT NULL) AS PE1
LEFT JOIN
PExtendedAttr PEA ON PE1.REncounterId = PEA.REncounterId
LEFT JOIN
PBooking PB ON PB.REncounterId = PE1.REncounterId) AS PE
这是来自数据库的示例数据。当我在数据库中运行查询时,它会返回正确的行数。仅当我通过Postman
应用程序 UI 发出请求时才会出现此问题。
TUniqueKey Clinic CSession StartDateTime
----------------------------------------------------
8CE5DE47 ABC1 AM 2021/03/11
56F3E7B2 ABC1 AM 2021/03/15
96E8BFE4 ABC1 AM 2021/03/10
97ACF31E ABC1 PM 2021/03/11
22CAE64E ABC1 PM 2021/03/15
B14DB9EA ABC1 PM 2021/03/18
B14DB9EC ABC1 AM 2021/03/18
解决方案
推荐阅读
- tensorflow - 谷歌云 GPU 机器突然重启
- java - 将变量转换为 Big O 中的原始操作吗?
- php - 我无法到达表格的 td 标签
- java - 从 Firebase 数据库中检索计数数据
- python - 除了手动之外,如何在 Matplotlib 中“暂停”、“恢复”和“重置”默认颜色循环?
- php - Apache 2.4 PHP 启动:无法加载动态库 'curl.so'、libcurl.4.dylib
- go - 如何使用 go 获取两位数的当前小时和分钟?
- sql - ORA-00905: 缺少关键字规范4
- c - 以 i++ 为条件的 C for 循环的奇怪行为
- google-maps - 谷歌地图 API 不会显示