Требуется помощь в выражении SQL - PullRequest
0 голосов
/ 13 июля 2011

У меня есть таблица, в которой дата хранится как varchar в формате DD.MM.YYYY.

Я создал сохраненный процесс, который будет запрашивать эту таблицу и возвращать результаты в зависимости от месяца и года.

У меня будет 2 входных параметра: MM и YYYY - оба будут представлены в виде строк.

Каким будет пункт where, чтобы получить все элементы, которые соответствуют месяцу и году? Я подозреваю, что мне нужно использовать оператор LIKE, потому что это поле varchar.

Мой SQL ржавый, спасибо за помощь.

Ответы [ 4 ]

2 голосов
/ 13 июля 2011

Попробуйте это (при условии, что @MM и @YYYY - ваши входные параметры):

SELECT *
  FROM <YOUR_TABLE>
 WHERE <DATE_COLUMN> LIKE '[0-9][0-9].' + @MM + '.' + @YYYY
1 голос
/ 13 июля 2011
WHERE field LIKE "%." + @month + "." + @year

Однако лучшим способом было бы создать новый столбец с правильным типом данных, запустить скрипт, чтобы заполнить правильные значения даты и времени в новом столбце, затем отбросить столбец varchar и использовать MSSQL, встроенные способамипоиск в поле даты и времени.Это даст вам гораздо более быстрый поиск в долгосрочной перспективе.

WHERE MONTH(field) = @month
      AND YEAR(field) = @year
1 голос
/ 13 июля 2011
 Select * from table1 t
    where Month(Cast(t.DateCol as DateTime)) = Cast("1" as bigint)
    AND Year(Cast(t.DateCol as DateTime)) = Cast("2011" as bigint)
0 голосов
/ 13 июля 2011
SELECT * FROM t1 WHERE RIGHT(datecol,7)= @StringMM + "." + @StringYYYY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...