Используйте синтаксис ISO для времени

Обоснование
В стандартном SQL разрешен единственный формат вывода времени — “гггг-мм-дд чч:мм:сс.ссссс”, основанный на ISO-8601. Согласно Федеральному стандарту обработки информации (Federal Information Processing Standards, FIPS) при отображении секунд требуется точность как минимум до пятого десятичного знака. Другие способы отображения недопустимы, если вы собираетесь работать с ПО, основанным на стандартах ISO.
В стандартном SQL определен минимальный набор операторов для работы с данными во временном формате. Все они доступны в любом SQL-продукте, хотя и с несколько различным синтаксисом. Например, в T-SQL вызов функции DATEADD в виде “DATEADD (DD, 13, birthdate)” приводит к прибавлению к датеbirthdate 13 дней. В стандартном SQL для того же действия предусмотрено следующее выражение: “birthdate + INTERVAL'13'DAY”.
Вы можете задать отображение в формате ISO-8601 в любом SQL-продукте и выполнить 99,99% работы с датами и временем без использования специфических функций. Проблемы могут возникнуть при переносе кода, поэтому заведите набор комментариев, касающихся любых различий между вашим диалектом и стандартом.

Исключения
Нет. В многоуровневой архитектуре форматирование отображения данных всегда производится на пользовательском уровне. Это основной принцип программирования, не имеющий отношения собственно к SQL Нарушают этот принцип обычно новички, пришедшие в SQL от традиционного монолитного языка, где существует четкая связь между приложением, отображением данных и файловой системой.

Используйте стандартные и переносимые функции

Обоснование
Стандартный SQL не предназначен для вычислений и потому не располагает библиотекой функций Фортрана или какого-либо пакета для статистических расчетов. SQL — это не язык для работы с текстом, поэтому в нем нет библиотеки функций языков ICON или Snobol. Все, чем вы располагаете в SQL-92, — это четыре действия арифметики и основные операторы для работы со строками. Тем не менее, разработчики всегда включают в свои продукты дополнительные операторы, поэтому вы можете создавать переносимые коды с другими математическими и строковыми функциями. Наиболее распространены такие дополнительные математические функции: взятие модуля, округление (или отбрасывание дробной части), возведение в степень и взятие логарифма. Наиболее распространенные дополнительные строковые функции: замена, обращение порядка символов и копирование.

Исключения
Если в вашем SQL-диалекте есть встроенная функция, эмуляция которой потребует большого количества кода или большого объема вычислений, используйте ее, но не забудьте отметить комментарием, что при переносе кода на другую платформу эту функцию нужно заменить.

Используйте максимально компактные конструкции

Entia non sunt multiplicanda praeter necessitatem
(He следует умножать сущности сверх необходимости )
Вильям Оккам (1280-1349)
Все должно быть сделано настолько просто, насколько это возможно, но не проще.
приписывается Альберту Эйнштейну

Написание как можно более короткого, ясного и компактного кода — это лучший подход к разработке ПО на любом языке программирования. Модуль, который выполняет единственную функцию, проще понимать и модифицировать. Системы с небольшим количеством модулей проще поддерживать.
SQL позволяет заменить сотни строк процедурного кода несколькими операторами. Заранее настройтесь на создание коротких и ясных решений. Конечно, искоренять старые привычки трудно. Многие новички продолжают мыслить в терминах логических проверок, основанных на булевой логике или простых выражениях AND-OR-NOT, о которых они узнали из своих первых языков программирования.

Избегайте лишних скобок

Обоснование
Когда новички видят автоматически сгенерированный SQL-код, в котором расставлены многочисленные вложенные скобки, они думают, что именно так код и пишется. Рассмотрим простой пример:

SELECT a, b, с

FROM Foobar

WHERE (a = b) AND (с < 42);

Этот пример не так уж плох с точки зрения читабельности, но если у вас более пяти предикатов, код с вложенными скобками становится трудным для чтения, а отыскивание парных скобок — настоящей головной болью. Пусть программисты LISP маются со скобками, вот уж им-то скобки нужны по-настоящему.

Исключения
Скобки в умеренном количестве облегчают чтение большого количества стоящих рядом предикатов. Сравните:

SELECT application_nbr

FROM LoanApplications

WHERE years_employed > 5

OR net_worth > loan_amt

AND monthly__expenses < 0.25 * loan_amt

OR collateral > 2.00 * loan_amt AND age > 25

OR collateral > loan_amt

AND age > 30

OR years_employed > 2

AND net_worth > 2.00 * loan_amt

AND Age > 21

AND monthly_expenses < 0.50 * loan_amt;

и

SELECT application_nbr

FROM LoanApplications

WHERE years_employed > 5

OR (net_worth > loan_amt

AND monthly_expenses < 0.25 * loan_amt)

OR (collateral > 2.00 * loan_amt AND age > 25)

OR (collateral > loan_amt AND age > 30)

OR (years_employed > 2

AND net_worth > 2.00 * loan_amt

AND age > 21

AND monthly_expenses < 0.50 * loan_amt);

В следующем разделе мы разберем, как в подобных ситуациях использовать оператор CASE.

Наши рекомендации