2012-04-23 3 views
1

У меня есть таблица, хранящаяся в базе данных SQL Server. Одно из полей таблицы имеет тип DATETIME. У меня также есть ASP Calendar, дата которого сравнивается с DATETIME, зарегистрированным в базе данных.Сравните только DATE в поле DATETIME из кода ASP.NET

Проблема в том, что я не хочу сравнивать время. Необходимо сравнивать только даты. Что такое SQL-запрос для этого.

Это то, что я использовал:

SqlCommand myCommand = new SqlCommand(" 
SELECT AUDIT.AUDIT_DETAILS, USERS.USER_NAME, AUDIT.DATE_TIME, IP 
FROM USERS JOIN AUDIT ON (USERS.USER_ID = AUDIT.USER_ID) 
WHERE USERS.USERS_NAME LIKE '%"+TextBox1.Text+"%' AND CONVERT(VARCHAR(10),AUDIT.DATE_TIME,110) like "+Calendar1.SelectedDate.Date+"'%'", conn); 

Я получаю правильный вывод в проводнике SQL Server, но при запуске из браузера через asp.net результат запроса пуст

+0

Можете ли вы показать в каком формате вы тестируете в проводнике SQL Server и в каком формате это ваш Calendar1.SelectedDate.Date? Может быть, проблема в формате даты. –

+0

Я тоже так думаю. Я на самом деле не указал какой-либо формат. Как сделать их обоими в том же формате. –

+0

Вы можете поместить Calendar1.SelectedDate.Date в какой формат SQL нужен как этот Calendar1.SelectedDate.Date.ToString («format»), где вместо формата вы должны написать формат, который вам нужен, например, dd/MM/yyyy или yyyy/MM/dd –

ответ

2

Вы можете получить только date from Datetime в SQL, как этот

CONVERT(DATE,GETDATE()) 

И после этого вы можете сравнить с этим значением.

+1

Вопрос Отредактировано –

2

Попробуйте изменить запрос, как показано ниже

SqlCommand myCommand = new SqlCommand("SELECT AUDIT.AUDIT_DETAILS, USERS.USER_NAME, AUDIT.DATE_TIME, IP 
    FROM USERS JOIN AUDIT ON (USERS.USER_ID = AUDIT.USER_ID) 
    WHERE USERS.USERS_NAME LIKE '%"+TextBox1.Text+"%' AND 
    CONVERT(VARCHAR(10),AUDIT.DATE_TIME,106) == CONVERT(VARCHAR(10),CAST('"+Calendar1.SelectedDate.Date+"' as DATETIME),106)", conn); 
Смежные вопросы