Мы мигрируем с Oracle на SQL Server (используя SSMA). В нашей среде Oracle мы использовали тип данных DATE
для некоторых столбцов, во время сопоставления типов данных для SQL Server мы установили тип данных DATETIME
для соответствующих столбцов.
Теперь предположим, что у меня есть следующая таблица:
+--------+-------------+---------------------------+
| grn_id | grn_no | grn_dt |
+--------+-------------+---------------------------+
| 1 | 0000000001 | 2018-01-03 00:00:00.000 |
| 2 | 0000000002 | 2018-01-03 00:00:00.000 |
| 3 | 0000000003 | 2018-01-03 00:00:00.000 |
| 4 | 0000000001 | 2018-01-27 00:00:00.000 |
+--------+-------------+---------------------------+
Я пытаюсь отфильтровать эти данные с помощью grn_dt(DATATYPE IS DATETIME)
со строкой, подобной '2018-01-27'
. Как правильно это сделать?
Мы уже использовали функцию преобразования следующим образом:
SELECT * FROM grn_header WHERE convert(date,grn_dt) <= '2018-01-27'
В любом случае, мы получаем требуемый вывод, но верно ли это преобразование?
Должен ли я установить преобразование для строки ('2018-01-27'
) также следующим образом?
SELECT * FROM grn_header WHERE convert(date,grn_dt) <= convert(date,'2018-01-27')
Есть ли альтернативный способ сделать это?