используя формат даты с оракулом и MySQL - PullRequest
1 голос
/ 11 февраля 2011

Привет всем
Как лучше написать SQL-оператор, совместимый с базами данных mysql, oracle и mssql.
Например, когда я пытаюсь выполнить это:

INSERT INTO "table_name ("date") VALUES (to_date('2011-02-11 16:48:08','yyyy-mm-dd hh24:mi:ss'));

это работает в oracle, но этот запрос выдаст ошибку: to_date не существует, когда я пытаюсь выполнить его в базе данных MYSQL.
, но этот следующий SQL работает на mysql и не работает в oracle:

INSERT INTO t_sys_log (date) VALUES ('2011-11-11');

Итак, не могли бы вы помочь мне решить проблему совместимости даты в mysql и oracle и сказать, есть ли способ заставить работать стандартные операторы SQL в rracle, mssql и mysql?Спасибо

Ответы [ 3 ]

2 голосов
/ 11 февраля 2011

Попробуйте стандарт ANSI DATE литерал

INSERT INTO t_sys_log (date) VALUES ( дата «2011-12-31»);

2 голосов
/ 11 февраля 2011

Да, to_date не будет доступен для обеих баз данных, так как это расширение SQL, которое было предложено только Oracle.

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

На даты MSSQL также распространяются правила часового пояса платформы, тогда как в других базах данных даты не подчиняются правилам часового пояса аналогичным образом.

В конце концов, если вы действительно хотите, чтобы он работал правильно, вам нужно написать программный слой, который переводит даты в форматы, требуемые базовой базой данных, отказываясь от «одного оператора SQL для выполнения всех дат».

0 голосов
/ 12 февраля 2011

Я столкнулся с той же проблемой.К сожалению, я не смог найти хороший способ сделать это.Вместо этого я создал подключаемый «вспомогательный» класс (это было в Java), который был установлен вместе с драйвером базы данных.У него были методы для создания частей оператора SQL, специфичных для СУБД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...