如何将两个时间戳作为SQL Server中的日期进行比较

时间:2016-01-22 00:16:31

标签: sql sql-server sql-server-2008

我想运行一个查询来恢复在输入日期是时间戳的日期或之后发生的事件,并且表格是时间戳。我遇到的问题是现在结果被排除在外,因此有些人会失踪。有关详细信息,请参阅以下示例

示例SQL

Select *
from table
where DateTime >= InputDateTime

样本表

Row | DateTime
1   | 2015-01-16 23:12:11
2   | 2015-01-15 06:12:24
3   | 2015-01-14 23:12:24
4   | 2015-01-15 23:12:24
5   | 2015-01-12 23:12:24

如果InputDateTime = 2015-01-15 12:13:24

,预期结果
Row | DateTime
1   | 2015-01-16 23:12:11
2   | 2015-01-15 06:12:24
4   | 2015-01-15 23:12:24

2 个答案:

答案 0 :(得分:2)

如果您只想考虑日期,请删除时间组件:

where datetime >= cast(getdate() as date)

但是,您也可以为变量或列执行此操作:

where datetime >= cast(@inputdatetime as date)

答案 1 :(得分:0)

既然我明白你想要仅仅根据日期进行比较,我正在改变我的代码以反映这样做:

DECLARE @inputDateTime DATETIME = '2015-01-15 12:13:24'

-- DROP TABLE [#testTable]
CREATE TABLE [#testTable]
(
[Row] INT IDENTITY(1,1),
[DateTime] DATETIME
)

INSERT INTO [#testTable]
    (
    [DateTime]
    )
VALUES
    ('2015-01-16 23:12:11'),
    ('2015-01-15 06:12:24'),
    ('2015-01-14 23:12:24'),
    ('2015-01-15 23:12:24'),
    ('2015-01-12 23:12:24')

SELECT
    *
FROM
    [#testTable]
WHERE
    [DateTime] >= CONVERT(DATETIME,FLOOR(CONVERT(FLOAT,@inputDateTime)))