В SQL Server у меня есть столбец DATETIME
, который включает элемент времени.
Пример:
'14 AUG 2008 14:23:019'
Каков лучший метод для выбора записей только для определенного дня, игнорируя часть времени?
Пример: (небезопасно, так как не соответствует временной части и не возвращает строк)
DECLARE @p_date DATETIME
SET @p_date = CONVERT( DATETIME, '14 AUG 2008', 106 )
SELECT *
FROM table1
WHERE column_datetime = @p_date
Примечание. Учитывая, что этот сайт также посвящен написанию заметок и приемов, которые вы выбираете, а затем забываете, я собираюсь опубликовать свой собственный ответ на этот вопрос, поскольку материал DATETIME в MSSQL, вероятно, является темой, которую я больше всего ищу в SQLBOL.
Обновление Уточненный пример, чтобы быть более конкретным.
Редактировать Извините, но мне пришлось преуменьшить НЕПРАВИЛЬНЫЕ ответы (ответы, которые возвращают неправильные результаты).
@ Jorrit: WHERE (date>'20080813' AND date<'20080815')
вернется 13-го и 14-го.
@ wearejimbo: Близко, но без сигары! Знак вручен вам. Вы пропустили записи, написанные в 14/08/2008 с 23: 59: 001 до 23: 59: 999 (т. Е. Менее чем за 1 секунду до полуночи.)