2016-01-22 5 views
0

Я хочу запустить запрос для возврата, который произошел в дату или после даты, когда дата ввода является меткой времени, а таблица и является временной меткой. Проблема, которая у меня есть, прямо сейчас, результаты исключаются из-за времени, поэтому некоторые из них пропадают. См ниже образец для деталейКак сравнить две метки времени как даты в SQL Server

Пример 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

Если вы хотите рассмотреть только дату, затем удалите компонент времени:

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

Из courese, вы можете сделать это для переменной или столбца, а также:

where datetime >= cast(@inputdatetime as date) 
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))) 
+0

2015-01-15 12:13:24 Предполагается, что полдень, который находится после 6 утра, например, 12:13 вечера. В тот же день, но будет исключен, если бы это было сравнение с меткой времени. – user1605665

+0

А, я понимаю, что вы сейчас имеете в виду, а затем просто обрезайте переменную inputDateTime при сравнении: DECLARE @inputDateTime DATETIME = '2015-01-15 12:13 : 24' - DROP TABLE [#testTable] CREATE TABLE [#testTable] ( [Строка] INT IDENTITY (1,1), [DateTime] DATETIME ) INSERT INTO [#testTable] \t ( \t [Дата] \t) ЦЕННОСТИ \t ('2015-01-16 23:12:11'), \t ('2015-01-15 06:12:24'), \t ('2015-01-14 23:12:24'), \t ('2015-01-15 23:12:24'), \t ('2015-01-12 23:12:24') ВЫБОР \t * ОТ \t [#testTable] ГДЕ \t [DateTime]> = CONVERT (DATETIME, FLOOR (CONVERT (FLOAT, @ inputDateTime))) – SQLPhilosopher

Смежные вопросы