2013-08-30 6 views
0

Не уверен, что заголовок действительно делает вопрос ясным, но в основном я использую «SELECT DISTINCT» в combobox для просмотра разных периодов журнала, однако формат столбца журнала tim (который нельзя изменить) является примером:
29 августа 9:21 вечера
29 августа 9:22 вечераВыбирайте различные значения, используя

Это не хорошо, как даже при использовании отчетливый будет судить их как различны, так как они есть. ЧТО Я ХОЧУ: Мне нужен оператор sql, который будет смотреть на значения и выбирать различное значение, основанное только на первой части, например, 29 августа и не учитывать времени.

У кого-нибудь есть идеи/код?

UPDATE :: Я использовал код ypercube, но он работает, но для фильтра я хочу его, чтобы при выборе даты, например, 29/08/2013, он переносит курсор datagrid в ячейку, где время журнала совпадает с этой датой , однако logtime должен оставаться в формате «29 августа 21:21», и идеи, как это сделать в C#?

+0

С «формат» вы имеете в виду, что вы храните даты в ' CHAR' столбцы? –

+0

Какая версия SQL-Server? 2012, 2008R2, 2008, 2005? (вы можете использовать 'SELECT @@ VERSION;' для проверки) –

+0

@ypercube датами являются varchar, используя sql-сервер 2012 – user2140577

ответ

0

Если данные хранятся на DATETIME колонке, и вы один недавний версия SQL-сервера, вы можете бросить в DATE:

SELECT DISTINCT 
    CAST(created_at AS DATE) AS date_created_at 
FROM 
    SSISLog ; 
+0

, который отлично работает, спасибо! но для фильтра я хочу, чтобы, когда я выбираю дату, например, 29/08/2013, он приносит курсор datagrid в ячейку, где время журнала совпадает с этой датой, однако время работы журнала должно оставаться в формате «29 августа 21:21 », и идеи, как это сделать в C#? – user2140577

0

Я предполагаю, что вы хотите что-то вроде следующих

SELECT DISTINCT(DATE(created_at)) FROM users; 
+0

Какая версия SQL-сервера имеет 'DATE()' как функцию? –

+0

@Salil, используя ваш код Я печатаю запрос execute, и код получает это: SELECT DISTINCT DATE (created_at) AS Expr1 FROM SSISLog, и я получаю сообщение об ошибке: DATE не является признанным типом функции – user2140577

+0

Ref this, вы можете получить представление http : //www.tutorialspoint.com/sql/sql-date-functions.htm – Salil

0

Try:

SELECT DISTINCT DATEADD(dd, DATEDIFF(d, 0, cast(YourDateColumn as datetime)), 0) 
FROM LogTable 

Это было бы очень неэффективно на большом наборе данных из-за актеров. Но так как вы не можете изменить таблицу. В противном случае я бы предложил добавить столбец persisted computed, который делает приведение к обновлению в таблицу, и вы могли бы добавить индекс.

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