gpt4 book ai didi

TSQL 日期时间比较

转载 作者:行者123 更新时间:2023-12-01 01:08:07 25 4
gpt4 key购买 nike

我想要做的是从 sql 中获取结果,其中日期在某个范围内但无法正常工作,这是我的查询。

DECLARE @CurrDate DATETIME
SET @CurrDate = GETDATE()
SELECT dbo.ProductDetails.PartnerID
,dbo.ProductDetails.ProductID
,dbo.Products.ProductName
,StartDate
,EndDate
FROM dbo.ProductDetails
INNER JOIN dbo.Products
ON dbo.ProductDetails.ProductID = dbo.Products.ProductID
WHERE CONVERT(VARCHAR(10),StartDate,111) <= @CurrDate
AND CONVERT(VARCHAR(10),EndDate, 111) >= @CurrDate

但是当 Enddate = @CurrDate该行不显示,但如果我将该日期提高一天,它就会显示出来。我做错了什么吗?任何建议都可以,谢谢。

最佳答案

GetDate()返回 日期和时间 ,而您转换为 varchar 会删除时间部分(我怀疑这就是它实际应该做的所有事情)。所以你需要对 @CurrDate 做同样的转换.

如果您只想简单地考虑日期(忽略时间部分),您可以使用 DATEDIFF而不是转换为 varchar (参见 here );例子:

DECLARE @CurrDate DATETIME
SET @CurrDate = GETDATE()
SELECT dbo.ProductDetails.PartnerID, dbo.ProductDetails.ProductID,
dbo.Products.ProductName , StartDate, EndDate
FROM dbo.ProductDetails INNER JOIN
dbo.Products ON dbo.ProductDetails.ProductID = dbo.Products.ProductID
-- where StartDate is on the same day or before CurrDate:
WHERE DATEDIFF(day, StartDate, @CurrDate) >= 0 AND
-- and where EndDate is on the same day or after CurrDate:
DATEDIFF(day, EndDate, @CurrDate) <= 0

关于TSQL 日期时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8562150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com