【问题标题】:How to filter in a single field using DateAdd如何使用 DateAdd 过滤单个字段
【发布时间】:2017-12-25 17:54:13
【问题描述】:

“FollowingTrialDate”类型为日期时间

我想在单个字段中的日期之间进行过滤。

如何在过去 15 天内的 FollowTrialDate 字段中进行过滤。

如果有错误,在哪里?

最好的问候,

SELECT C.[No],
convert(date,CaseDate,103) as ModuleDate,
convert(date,FollowingTrialDate,103) as FollowingTrialDate,
ShortDescription,
Username,
Name,
Surname,
Email,
C.[Description] as [Desc],
'Davalar' as ModuleName
FROM [LegalIT_MnemonicTEST].[dbo].[Module_Case] C 
inner join [System_User] su on C.LawyerID = su.UserID 
where CONVERT(date,FollowingTrialDate,0) 
between DATEADD(DD,-15,CONVERT(date,FollowingTrialDate,0)) and 
        DATEADD(DD,0,CONVERT(date,FollowingTrialDate,0)) 

【问题讨论】:

  • 过去十五天是什么意思?您是指FollowingTrialDate 月份的最后十五天?
  • 首先,FollowingTrialDate 是日期时间类型,不需要再转成日期进行比较。此外,您检查 FollowTrialDate 是否介于(FollowingTrialDate -15 天)和 FollowTrialDate 之间的条件将始终为真
  • .. 在 CAST (DATEADD(DD,-15,CURRENT_TIMESTAMP) AS DATE) 和 CAST(CURRENT_TIMESTAMP as DATE) 之间
  • FollowingTrialDate 是日期字段。例如;我想在 05.07.2017 - 20.07.2017 之间过滤
  • “FollowingTrialDate 是日期字段”,“FollowingTrialDate 类型是日期时间”。哪个是对的?相应地编辑问题。

标签: sql tsql datetime dateadd


【解决方案1】:

试试下面的代码(如果FollowingTrialDate的类型是你的数据库中指定的日期时间)

请注意,如果您的 CaseDate 或 FollowTrialDate 已在数据库中指定的“日期时间”类型中,则无需先将其转换为日期以用于输出或过滤 WHERE 子句中使用的数据

SELECT C.[No],
convert(datetime,CaseDate) as ModuleDate,
FollowingTrialDate,
ShortDescription,
Username,
Name,
Surname,
Email,
C.[Description] as [Desc],
'Davalar' as ModuleName
FROM [LegalIT_MnemonicTEST].[dbo].[Module_Case] C 
inner join [System_User] su on C.LawyerID = su.UserID 
where FollowingTrialDate
between DATEADD(DAY, DATEDIFF(DAY, 0, dateadd(dd, -15, getdate())), 0) and 
        DATEADD(DAY, DATEDIFF(DAY, 0, getdate()), 0)

【讨论】:

  • 不应该是GetDate(),整个操作会在“FollowingTrialDate”。所以应该是(FollowingTrialDate-15 天)
  • 但如果您使用条件说:where FollowingTrialDate between dateadd(dd, -15, FollowingTrialDate) and FollowingTrialDate,则条件将始终为真。假设您的 FollowTrialDate 是 20170720,它将始终在 20170715 和 20170720 之间
  • 或者您想将您的 CaseDate 与 FollowTrialDate 进行比较?
  • @Batuhan 只有比较两个日期才有意义,从一个日期到另一个日期持续十五天。
  • 对不起,我的最后一条评论有错字,应该是它总是在 20170705 和 20170720 之间
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 2011-06-01
  • 2021-11-02
  • 2013-08-18
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 2014-01-25
相关资源
最近更新 更多