Sql 这个方法返回的结果是0!所以我没那么坏;)marc_s我认为它在“2008-07-01”到“2008-09-30”的日期不起作用,当我通过这些日期时,没有返回结果(对于上述日期)。+1因为MadBoy向我指出了你的解决方案是有效的。谢谢你的教训;P@Mad
Sql 这个方法返回的结果是0!所以我没那么坏;)marc_s我认为它在“2008-07-01”到“2008-09-30”的日期不起作用,当我通过这些日期时,没有返回结果(对于上述日期)。+1因为MadBoy向我指出了你的解决方案是有效的。谢谢你的教训;P@Mad,sql,sql-server,datetime,Sql,Sql Server,Datetime,这个方法返回的结果是0!所以我没那么坏;)marc_s我认为它在“2008-07-01”到“2008-09-30”的日期不起作用,当我通过这些日期时,没有返回结果(对于上述日期)。+1因为MadBoy向我指出了你的解决方案是有效的。谢谢你的教训;P@Madboy:小心使用ISO-8601格式:YYYYMMDD-无破折号或任何内容!否则,您的语言和区域设置可能会导致问题。使用“20080701”和“20080930”-这样行吗?另外:合同是否碰巧在这些日期开始或结束?那么,合同开始日期/结束日期的
这个方法返回的结果是0!所以我没那么坏;)marc_s我认为它在“2008-07-01”到“2008-09-30”的日期不起作用,当我通过这些日期时,没有返回结果(对于上述日期)。+1因为MadBoy向我指出了你的解决方案是有效的。谢谢你的教训;P@Madboy:小心使用ISO-8601格式:
YYYYMMDD
-无破折号或任何内容!否则,您的语言和区域设置可能会导致问题。使用“20080701”和“20080930”-这样行吗?另外:合同是否碰巧在这些日期开始或结束?那么,合同开始日期/结束日期的日期时间的时间部分可能会导致问题,这就是问题所在。当你这样使用它时,它不会返回任何东西。我以前用过它,但它不能正常工作。这是因为在这两个日期之间不需要[klienciiumowydatapoczatkowa]。它应该返回2005-11-28 00:00:00.000 2008-07-22 00:00:00.000,而如果在这两者之间进行匹配,则它将不匹配任何内容。可能不考虑查询中的[klienciiumowydatapoczatkowa]列。只需考虑[KLyEnCuMuWyDATAPOCZATKOWAW]列在由“CyrTrasDestestART”和“CyrActDATEnEnter?”参数化的周期内,就不会在两者之间工作。假设我想搜索'2008-04-01'到'2008-06-30'期间。如果你把它放在[klienciiumowydatapocchatkowa]的中间,它不会返回2005-11-28 00:00:00.000 2008-07-22 00:00:00.000,因为“2005-11-28”与开始日期不匹配,2008-07-22也与结束日期不匹配。正如你所看到的,这份合同在我提到的日期内有效。检查marc_的解决方案,它很简单而且有效。感谢MadBoy花时间解释为什么我的解决方案不适用于您!我检查了marc_的解决方案并投了赞成票。你说得对,这很简单!=)这和威尔的建议不完全一样。它返回0行,而marc_s返回1(正确),这是因为在这些日期之间不需要[klienciiumowydatapoczatkowa]。它应该返回2005-11-28 00:00:00.000 2008-07-22 00:00:00.000,而如果你在两者之间做了,它将不会匹配任何内容。尽管你发布了很多信息,但marc_s是正确的(就像你的第一个解决方案),他是第一个。谢谢你对其他东西的想法。我对它有问题,因为出于某种原因,我一直在尝试在两者之间使用,就像这里的其他两个家伙一样,但它不起作用;)@实际上,我的代码是正确的,在您的示例中,不会选择任何行。第一行被删除,因为它的结束日期(2008-07-22)不是>='2008-09-30'-好吗?第二行从查询结果中删除,因为它的开始日期(2008-07-23)不是@Modboy:请参阅我的更新-通过重新制定查询条件,您应该得到您想要的。感谢更新。还没有达到我预期的效果。对于查询#1,请参见我在这里的第一条评论-这仍然是相同的问题。您刚才的条件只是删除了两个预期的行-请检查@马克:我必须得到我需要的东西。我需要给sql 2个日期。我需要回复我那个时期有多少合同是合法的,日期是什么。第三次编辑似乎有效,但我不是100%确定。第一个查询适用于第一个示例,第二个查询适用于第二个示例。如果我把你的两个例子合并成一个,效果很好。但它会不会反弹,我不知道。
SELECT
[KlienciUmowyDataPoczatkowa],
IsNULL([KlienciUmowyDataKoncowa], GETDATE()) AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
KlienciUmowyDataPoczatkowa KlienciUmowyDataKoncowa
2005-11-28 00:00:00.000 2008-07-22 00:00:00.000
2008-07-23 00:00:00.000 2010-03-09 15:45:42.457
SELECT
[KlienciUmowyDataPoczatkowa],
[KlienciUmowyDataKoncowa]
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3 AND
[KlienciUmowyDataPoczatkowa] <= '2008-07-01' AND IsNULL([KlienciUmowyDataKoncowa], '99991231') >= '2008-09-30'
2005-11-28 00:00:00.000 2008-07-22 00:00:00.000
2008-07-23 00:00:00.000 NULL
SELECT [KlienciUmowyDataPoczatkowa],
IsNULL([KlienciUmowyDataKoncowa], '99991231') AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND [KlienciUmowyDataPoczatkowa] <= '20080401' AND IsNULL([KlienciUmowyDataKoncowa], '99991231') >= '20080630'
SELECT
[KlienciUmowyDataPoczatkowa],
[KlienciUmowyDataKoncowa]
FROM
[BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE
[PortfelID] = 3 AND
-- either: start date is sometime between the two dates
([KlienciUmowyDataPoczatkowa] BETWEEN '20080401' AND '20080630'
-- or: end date is sometime between the two dates
OR
ISNULL([KlienciUmowyDataKoncowa], GETDATE()) BETWEEN '20080401' AND '20080630')
SELECT [KlienciUmowyDataPoczatkowa],
IsNULL([KlienciUmowyDataKoncowa], '99991231') AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND [KlienciUmowyDataPoczatkowa] <= '20080701' AND IsNULL([KlienciUmowyDataKoncowa], '99991231') >= '20080930'
SELECT
[KlienciUmowyDataPoczatkowa],
[KlienciUmowyDataKoncowa]
FROM
[BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE
[PortfelID] = 3 AND
-- either: start date is sometime between the two dates
([KlienciUmowyDataPoczatkowa] BETWEEN '20080701' AND '20080930'
-- or: end date is sometime between the two dates
OR
ISNULL([KlienciUmowyDataKoncowa], GETDATE()) BETWEEN '20080701' AND '20080930')
SELECT [KlienciUmowyDataPoczatkowa]
, ISNULL([KlienciUmowyDataKoncowa], GETDATE()) AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND
(
([KlienciUmowyDataPoczatkowa] BETWEEN '20080401' AND '20080630'
OR ISNULL([KlienciUmowyDataKoncowa], GETDATE()) BETWEEN '20080401' AND '20080630')
OR ([KlienciUmowyDataPoczatkowa] <= '20080401' AND IsNULL([KlienciUmowyDataKoncowa], '99991231') >= '20080630')
)
SELECT [KlienciUmowyDataPoczatkowa]
, ISNULL([KlienciUmowyDataKoncowa], GETDATE()) AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND
(
([KlienciUmowyDataPoczatkowa] BETWEEN '20080701' AND '20080930'
OR ISNULL([KlienciUmowyDataKoncowa], GETDATE()) BETWEEN '20080701' AND '20080930')
OR ([KlienciUmowyDataPoczatkowa] <= '20080701' AND IsNULL([KlienciUmowyDataKoncowa], '99991231') >= '20080930')
)
SELECT
(list of fields)
FROM dbo.YourTable
WHERE
StartDate <= '20080401' AND EndDate >= '20080630'
SELECT
(list of fields)
FROM dbo.YourTable
WHERE
StartDate <= '20080401' AND ISNULL(EndDate, '99991231') >= '20080630'
SELECT
[KlienciUmowyDataPoczatkowa],
[KlienciUmowyDataKoncowa]
FROM
[BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE
[PortfelID] = 3 AND
-- either: start date is sometime between the two dates
([KlienciUmowyDataPoczatkowa] BETWEEN '20080701' AND '20080930'
-- or: end date is sometime between the two dates
OR
ISNULL([KlienciUmowyDataKoncowa], GETDATE()) BETWEEN '20080701' AND '20080930')
SELECT
[KlienciUmowyDataPoczatkowa],
CASE WHEN [KlienciUmowyDataKoncowa] IS NULL THEN GETDATE() ELSE [KlienciUmowyDataKoncowa] END AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND [KlienciUmowyDataPoczatkowa] BETWEEN @ContractDateStart AND @ContractDateEnd
SELECT [KlienciUmowyDataPoczatkowa]
, ISNULL([KlienciUmowyDataKoncowa], GETDATE()) AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND ([KlienciUmowyDataPoczatkowa] BETWEEN @StartDate AND @EndDate
OR ISNULL([KlienciUmowyDataKoncowa], GETDATE()) BETWEEN @StartDate AND @EndDate)
SELECT
[KlienciUmowyDataPoczatkowa],
IsNULL([KlienciUmowyDataKoncowa], GETDATE()) AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND KlienciUmowyDataPoczatkowa] <= '2008-04-01'
AND IsNULL([KlienciUmowyDataKoncowa], GETDATE()) >= '2008-06-30'
SELECT
[KlienciUmowyDataPoczatkowa],
IsNULL([KlienciUmowyDataKoncowa], GETDATE()) AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND KlienciUmowyDataPoczatkowa] <= '2008-04-01'
AND ([KlienciUmowyDataKoncowa] >= '2008-06-30'
OR [KlienciUmowyDataKoncowa] IS NULL)
SELECT
[KlienciUmowyDataPoczatkowa],
IsNULL([KlienciUmowyDataKoncowa], GETDATE()) AS 'KlienciUmowyDataKoncowa'
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND <Client_ID> IN
(SELECT
<Client_ID>
FROM [BazaZarzadzanie].[dbo].[KlienciPortfeleUmowy]
WHERE [PortfelID] = 3
AND KlienciUmowyDataPoczatkowa] <= '2008-04-01'
AND IsNULL([KlienciUmowyDataKoncowa], GETDATE()) >= '2008-06-30')