Преобразование даты в строку делается с использованием функции TO_CHAR.
Синтаксис TO_CHAR (dt, формат даты):
формат даты
• YYYY — год;
• MM — месяц;
• DD — день;
• DN — день недели;
• hh24 — час;
• mi — минута;
• ss — секунда.
Преобразование строки в тип даты.
Синтаксис TO_DATE (строка, формат даты)
Примеры
Преобразовать текущую дату к строке в формате DD.MM.YYYY hh24:mi.
Преобразовать вчерашнюю дату к строке DD.MM.YYYY hh24:mi.
Преобразовать следующую строку к дате ’01.11.2011 21:11».
Преобразовать к строке в запросе SELECT даты создания всех автомобилей BMW в формате DD.MM.YYYY hh24:mi из таблицы AUTO к строке:
Универсальный формат даты
В SQL ORACLE диалекта существует универсальная конструкция для работы с данными типа DATA, «дата-время» — DATE’YYYY-MM-DD», где YYYY — текущий год, ММ — месяц, DD — день.
Примеры использования универсальной конструкции
Из таблицы AUTO вывести все автомобили, выпущенные после 01.05.2011.
Из таблицы AUTO вывести все автомобили, выпущенные до 01.10.2014.
Из таблицы AUTO вывести все автомобили, выпущенные после 01.01.2010 и до 01.10.2014, используя BETWEEN.
Формат преобразования даты
Формат преобразования даты при преобразовании строки в дату должен соответствовать формату преобразуемой даты, иначе вы получите ошибку соответствия форматов.
Как найти разницу между двумя датами в днях, часах, минутах?
В MS SQL для этого используется специальная функция DATEdiff, а в ORACLE все более сложно. Воспользуемся функцией NUMTODSINTERVAL и напишем запрос.
Как найти дату-время, которая будет на 50 секунд позже текущего момента, как написать такой запрос?
Пример такого запроса: мы знаем, что один день равен 1, соответственно час 1/24, минута 1/ (24*60) и секунда 1/ (24*60*60) = 86400. Соответственно, запрос:
А если нам нужны миллисекунды, что делать?
Для этого существует специальный тип данных TIMESTAMP, но с особенностями работы с этим типом данных мы познакомимся чуть позже.
Контрольные вопросы и задания для самостоятельного выполнения
1. Вывести год, месяц, день производства авто из таблицы AUTO.
2. Вывести дату 30 дней назад.
3. Вывести последний день месяца 80 дней назад.
4. Преобразовать следующую строку к дате 01.11.2011 21:11.
5. Преобразовать дату 5 дней назад к строке DD.MM.YYYY hh24:mi.
6. Вывести на экран дату и время 4 часа назад от текущего момента.
Шаг 26. Функции и операторы для работы со строками и текстом
Обзор основных функций работы с текстом в SQL ORACLE диалекта и их применения.
Тестовые данные окружают нас повсюду, и без специальных сервисных функций работы со строками и текстом обойтись было бы сложно. SQL ORACLE диалекта предлагает множество функций для работы с текстовыми данными, основные из которых мы сейчас рассмотрим.
Мы уже познакомились с оператором LIKE, позволяющим выбирать из базы данных строки с текстом, соответствующие определенному шаблону.
В SQL ORACLE также есть множество полезных сервисных функций для модификации строк, работы с подстроками, объединения строк.
Объединение строк — по-правильному конкатенация.
Для объединения строк в языке SQL диалекта ORACLE используется специальная синтаксическая конструкция ||.
— телевизор.
Рисунок 58. Запрос: пример объединения строк
INstr — поиск позиции подстроки в строке.
INSTR (STR1, STR2, POSn, DIRECTION) — возвращает позицию STR2 в строке STR1,
где поиск осуществляется в позиции POSn
в направлении DIRECTION 1 — от начала строки, 0 — от окончания строки, то есть откуда мы начинаем поиск — от начала строки или с конца строки.
Примеры
Найти первое вхождение буквы «а» в название городов в таблице CITY, вывести на экран и вхождение символа «а».
Рисунок 59. Запрос: пример INSTR
Найти последнее вхождение буквы «а»в название городов в таблице CITY, вывести на экран и номер последнего вхождения символа «а».
Рисунок 60. Запрос к CITY: пример INSTR
Length — длина строки в символах.
LENGTH (str1) возвращает длину строки str1 в символах.
Примеры
Длина строки «AAA»
— 3.
Длина строки «AAA1234»
— 7.
Длина строки «привет мир»
— 10.
Вывести из таблицы MAN имя, фамилию, длину имени и фамилии в символах.
Вывести из таблицы MAN записи *, где длина имени> 5.
Читать дальше
Конец ознакомительного отрывка
Купить книгу