繁体   English   中英

SQL Server中日期时间的比较

[英]Comparison of datetime in sql server

我将日期时间存储为数据库的标准日期时间,如2011-10-19 17:18:44.083。 如果datetime字段等于今天之后的5天,则需要选择所有行。 但是我不希望仅仅一天就足够这种比较。

SELECT * FROM dbo.TestBox
where TargetDate = dateadd(day,5, getdate()) 

这是行不通的,我不知道为什么,但可能不知道为什么。

提前致谢,

如果您使用的是2008+,则可以将两者都转换为日期:

where convert(date, targetdate) = convert(date, dateadd(day, 5, getdate()))

如果您使用的是2005或更早版本,请执行以下操作:

where convert(varchar, targetdate, 101) = convert(varchar, dateadd(day, 5, getdate()), 101)

你可以做:

SELECT * FROM dbo.TestBox
where CONVERT(VARCHAR(8),TargetDate,112) = CONVERT(VARCHAR(8),dateadd(day,5, getdate()),112)

或者,如果您在TargetDate上有一个索引:

SELECT * FROM dbo.TestBox
where TargetDate >= CONVERT(VARCHAR(8),dateadd(day,5, getdate()),112) 
AND TargetDate < CONVERT(VARCHAR(8),dateadd(day,6, getdate()),112) 

尝试:

select * 
from dbo.TestBox 
where datediff(dd, getdate(), TargetDate) = 5

样例代码:

declare @targetDate as DateTime
set @targetDate = '2011-11-2'
select datediff(dd, getdate(), @targetDate)

输出:

DATEDIFF进行救援!

DECLARE @monday DATETIME;
DECLARE @fridayAM DATETIME;
DECLARE @fridayPM DATETIME;
SET @monday = '2011-10-23 10:50:00';
SET @fridayAM = '2011-10-28 08:00:00';
SET @fridayPM = '2011-10-28 17:30:00';
SELECT DATEDIFF(DAY, @monday, @fridayAm) AS AmDiff, 
       DATEDIFF(DAY, @monday, @fridayPm) AS PmDiff

AmDiff和PmDiff均为5。

以下查询应执行所需的操作。

SELECT * FROM dbo.TestBox 
WHERE TargetDate 
        BETWEEN DATEADD(DAY, 5, DATEADD(MILLISECOND, 1, DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)))
        AND DATEADD(DAY, 5, DATEADD(MILLISECOND, -2, DATEADD(DAY, datediff(day, 0, GETDATE()) + 1, 0))) -- between the start and end of the date in 5 days

该问题可能是由于日期格式不同所致。

该链接在sql http://databases.aspfaq.com/database/what-are-the-valid-styles-for-converting-datetime-to-string.html中具有所有日期格式选项。

尝试类似的东西:

SELECT * FROM dbo.TestBox where CONVERT(CHAR(8), TargetDate , 1)= dateadd(day,5, (CHAR(8), getdate(), 1))  

这会将您要比较的两个日期都转换为相同的格式,并放宽了时间部分

除了使用GETDATE(),您还可以使用CURRENT_TIMESTAMP

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM