Преобразование даты в строку |
||||||||||||||||||||||||||||||||
Речь пойдет о форматировании даты. Форматирование даты обычно используется для представления даты/времени в отчетах, подготовленных для печати. Как правило, такое форматирование выполняется средствами разработки отчетов. Однако и на уровне СУБД есть подобные возможности. Мы не будем здесь обсуждать вопрос о том, где лучше выполнять данное форматирование. Отметим лишь, что в ряде задач на сайте sql-ex.ru требуется представить результат выполнения запроса в том или ином конкретном формате. SQL ServerДля форматирования даты в SQL Server используется функция CONVERT. Будем рассматривать в качестве примера дату, возвращаемую следующим запросом:
Например, чтобы получить из этого представления временной метки только дату в привычном нам формате "dd-mm-yyyy", достаточно написать
Для вывода в формате "mm-dd-yyyy" можно в функции CONVERT поменять параметр стиля на 110:
Для вывода одной лишь компоненты времени без миллисекунд используется стиль 108:
MySQLВ MySQL для форматирования даты используется функция DATE_FORMAT, в которой вторым параметром является маска, в соответствии с которой форматируется первый параметр типа даты/времени. Рассмотренные выше примеры для MYSQL можно переписать следующим образом:
Заметим, что "H" используется для представления 24-часового формата времени, а "h" - для 12-часового формата. PostgreSQL & OracleЭти СУБД используют для форматирования функцию TO_CHAR с интуитивно понятной маской. Наши примеры для PostgreSQL будут выглядеть так:
Для Oracle принципиальных отличий нет. Чтобы примеры, приведенные для PostgreSQL, работали в Oracle, нам нужно знать, что строковое представление даты нужно явно преобразовывать к соответствующему темпоральному типу (при сравнениях с датой). Кроме того, не поддерживается стандартное представление временной метки с разделителем "T" между датой и временем. Например, последний пример в Oracle будет иметь вид:
|