2009-08-18 6 views
1

Я пытаюсь сравнить дату в SQL и создать новое поле, чтобы я мог группировать результаты по дате Todays и другим датам. Я конвертирую обе даты в CHAR. Однако я получаю ошибку выражения рядом с = и). Это для отчета SSRS.TSQL - Case Date Compare

Существует довольно сложный оператор SQL, и я просто пытаюсь добавить этот дополнительный оператор, чтобы помочь в группировке.

Вот пример.

Дело КОГДА Преобразовать (Символьное (8), FieldDate, 103) = Преобразование (CHAR (8), GetDate(), 103) Тогда tmpDate = '1' ИНАЧЕ tmpDate = '0' КОНЕЦ

Это приводит к неправильному sntax вблизи «=» Это приводит к неправильному sntax возле «)»

Благодаря

ответ

3

Почему бы не сравнить даты?

CASE WHEN DATEDIFF(day, FieldDate, GETDATE()) = 0 THEN 1 ELSE 0 END AS tmpDate 
+0

Я думал об этом, но не знал, как правильно это подберет дату. Однако при быстром просмотре он работает. Я искал совет, прежде чем возвращать дату без времени, и способы указывали на мой первый метод выше. – Audioillity

+0

Использование 'DATEDIFF', как указано выше, будет прекрасно для * сравнения * двух дат. – LukeH

+0

Если вы действительно хотели вернуть только элемент даты как 'DATETIME', а не строку, вы можете использовать' DATEADD (день, 0, DATEDIFF (день, 0, FieldDate)) 'и т. Д., Который будет иметь элемент времени, '00: 00: 00.000'. – LukeH

1

Если ваш пример из кода (копировать/вставить), «Тогда tmpDate -«1 '' не будет работать. Вы помещаете дефис вместо знака равенства?

+0

жаль, что была опечатка, код на системе без доступа в Интернет. он был установлен на = нет - теперь исправлено выше. – Audioillity

2

Перемещение поля на фронт:

select tmpDate = 
    CASE 
    WHEN Convert(Char(8), FieldDate, 103) = Convert(Char(8), GetDate(), 103) Then '1' 
    ELSE '0' END