как название указывает на то, что я пытаюсь сделать единообразного запрос, который имеет совместимый синтаксис для Oracle SQL и для SQL ServerРавномерное SQL Дата в Oracle SQL и SQL Server
Текущий синтаксис у меня написано в Oracle и является:
SELECT *
FROM TableA
WHERE CREATION_DATE = TO_DATE('12-09-2015', 'DD-MM-YYYY')
Когда я пытаюсь построить это на SQL Server, это не сработает. Синтаксис SQL Server является
SELECT *
FROM TableA
WHERE OrderDate='12-09-2015'
Но это не работает в Oracle SQL ...
Так что равномерный способ написать это?
Есть ли причина, по которой вы хотели бы использовать литералы в первую очередь? Вместо использования переменных связывания, чтобы вы могли использовать любой класс 'date' на любом языке, на котором вы строите свое приложение? –
+1 для предложения Джастина Кейв. Гораздо безопаснее использовать параметризованные запросы с параметрами, заданными по дате, а также не только для того, чтобы избежать локализации, но и по соображениям безопасности и производительности. BTW в SQL Server - это формат YYYYMMDD. –
Переменные привязки лучше всего, когда их можно использовать, но это не всегда. Иногда вам нужны жестко закодированные даты для кодирования бизнес-правил, например. налоговые ставки изменяются на определенную дату, как рассчитывается какой-то идентификатор или ссылочный номер, в зависимости от даты. – Ben