我正在使用SQL服务器。我试图给出一个条件,它给出了日期差异在0-3之间的行,或者如果在迁移日期后0-3天打开了某些东西。
当我将条件添加到WHERE子句时,它表现得很好玩。我需要帮助找出最佳方法
这给我一个结果,其中日期差异小于0,即使我说> = 0
print_r
这给我一个结果,其中日期差异大于4,即使我说< 4
select * from table_1
where datediff(day, a.[opened date], d.[UserMigratedDate]) >= 0
当我使用它之间时它会注意到。我做错了吗?
select * from table_1
where datediff(day, a.[opened date], d.[UserMigratedDate]) < 4
答案 0 :(得分:1)
我希望看到导致此问题的测试数据...因为where子句是正确构造的。以下面的情况为例。将返回ID 2-5。此外,您所看到的第一个datediff()
日期是&gt; = 0是没有意义的,除非有人可以在打开之前迁移某些内容...
http://rextester.com/UTLX59878
declare @table table (id int, openedDate datetime, UserMigratedDate datetime)
insert into @table
values
(1,'2017-01-01','2016-12-31'), --this technically shouldn't happen
(2,'2017-01-01','2017-01-01'),
(3,'2017-01-01','2017-01-02'),
(4,'2017-01-01','2017-01-03'),
(5,'2017-01-01','2017-01-04'),
(6,'2017-01-01','2017-01-05')
select
*,
datediff(day, openedDate, UserMigratedDate) as theDateDiff
from @table
where
datediff(day, openedDate, UserMigratedDate) >= 0
and
datediff(day, openedDate, UserMigratedDate) < 4