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')