Операции, использующие значения даты и времени
Операции, использующие значения даты и времени
Использование арифметических операций в манипулировании данными, в вычислениях и в отношениях между двумя датами были ранее рассмотрены в разд. "Интервал времени" этой главы. Возможность вычитания значения более ранней даты, времени или даты-времени из более поздней существует благодаря способу хранения типов дата и время в Firebird. Способ хранения использует одно или два 32-битовых целых для даты/времени, только для даты или только для времени дня. Данные, представленные в этих числах, являются днями в длинном слове даты и дробной частью дней в слове времени. Дата представлена количеством дней с "нулевой даты"- 17 ноября 1898 г[26]. Время представлено в десятитысячных долях секунд, прошедших с полуночи.
В диалекте 3 DATE хранит только дату. В диалекте 3 TIME хранит только время. TIMESTAMP и в диалекте 1 DATE хранят обе части.
С этими числовыми структурами можно довольно просто оперировать, используя несложные выражения сложения и вычитания для вычисления разницы во времени (интервал), увеличения или уменьшения дат, установления диапазонов даты или времени. В табл. 10.7 описываются доступные операции и получаемые результаты.
Таблица 10.7. Арифметические операции для типов данных даты и времени
Операнд 1
Оператор
Операнд 2
Результат
DATE
+
TIME
TIMESTAMP (арифметическая конкатенация)
DATE
+
Числовое значение n**
DATE, увеличенная на n целых дней (игнорируется дробная часть n, если указана)
TIME
+
DATE
TIMESTAMP (арифметическая конкатенация)
TIME
+
Числовое значение n**
TIME, увеличенное на n секунд*
TIMESTAMP
+
Числовое значение n**
TIMESTAMP, где дни увеличены на целую часть числа n плюс дробная часть числа n (если указана) как количество десятитысячных долей секунды в дне (8.64 x 10(^5^))
DATE
-
DATE
Количество дней в интервале: DECIMAL(9,0)
DATE
-
Числовое значение N**
DATE, уменьшенная на n дней (игнорируется дробная часть n, если указана)
TIME
-
TIME
Количество секунд в интервале: DECIMAL(9,4)
TIME
-
Числовое значение n**
TIME, уменьшенное на n секунд*
TIMESTAMP
-
TIMESTAMP
Количество дней и части дня в интервале: DECIMAL (18, 9)
TIMESTAMP
-
Числовое значение n**
TIMESTAMP, где дни уменьшены на целую часть числа n плюс дробная часть числа n (если указана) как количество десятитысячных долей секунды в дне (8.64x10(^5^))
* При необходимости повторяется (result=modulo(result, (24*60*60))) пока не будет выделена результирующая часть дней.
** В диалекте 3 для типа DATE n является целым, представляющим количество дней. Для типов данных TIMESTAMP и для диалекта 1 DATE n может быть числом, представляющим количество дней слева от десятичной точки (целая часть) и части дня справа от десятичной точки (дробная часть). Для типа TIME n является целым числом, представляющим количество секунд.
Общие правила для операций
Одно значение даты или времени может быть вычтено из другого, если:
* оба значения имеют один и тот же тип даты/времени;
* первый операнд является более поздним, чем второй.
Вычитание, использующее типы дата/время, дает результаты: масштабируемое DECIMAL в диалекте 3 и DOUBLE PRECISION В диалекте 1.
Типы данных дата/время не могут складываться друг с другом. Однако можно выполнить конкатенацию части даты и части времени, используя:
* дополнительный бинарный синтаксис для конкатенации пар полей или переменных;
* объединение строк для конкатенации литерала дата/время с другим литералом дата/время или с полем, или переменной типа дата/время.
Операции умножения и деления, включающие типы данных дата/время, недопустимы.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
6.1.3. Форматирование даты и времени
6.1.3. Форматирование даты и времени Примеры в предыдущем разделе показали, как поля в struct tm могли бы быть использованы в качестве индексов символьных строк для вывода информативных значений даты и времени. Хотя можно было бы написать собственный код, использующий такие
18.1. Вывод времени и даты
18.1. Вывод времени и даты 18.1.1. Представление времени В системах Unix и Linux время отслеживается в секундах до или после начала эпохи, которое определяется как полночь 1 января 1970 года по UTC[148]. Положительные значения времени относятся к периоду после начала эпохи;
Функции даты и времени
Функции даты и времени checkdateПроверяет правильность даты/времени.Синтаксис:int checkdate(int month, int day, int year);Функция checkdate() проверяет правильность даты, заданной в ее аргументах.Возвращает true если дата, указанная как "month, day, year" (месяц, число, год), правильна, иначе false. Дата считается
1.5. Простой сервер времени и даты
1.5. Простой сервер времени и даты Мы можем написать простую версию сервера TCP для определения времени и даты, который будет работать с клиентом, описанным в разделе 1.2. Мы используем функции-обертки, описанные в предыдущем разделе. Код сервера приведен в листинге 1.5.Листинг
Пример: клиент времени и даты
Пример: клиент времени и даты В листинге 11.5 показан наш клиент времени и даты из листинга 1.1, переписанный с использованием функции tcp_connect.Листинг 11.5. Клиент времени и даты, переписанный с использованием функции tcp_connect//names/daytimetcpcli.c 1 #include "unp.h" 2 int 3 main(int argc, char **argv) 4 { 5 int
Пример: сервер времени и даты
Пример: сервер времени и даты В листинге 11.7 показан наш сервер времени и даты из листинга 4.2, переписанный с использованием функции tcp_listen.Листинг 11.7. Сервер времени и даты, переписанный с использованием функции tcp_listen//names/daytimetcpsrv1.c 1 #include "unp.h" 2 #include <time.h> 3 int 4 main(int argc, char
Настройка системной даты и времени
Настройка системной даты и времени Информация о текущей системной дате и времени по умолчанию отображается в правом нижнем углу интерфейса, в области уведомлений панели задач. Вы можете самостоятельно настроить режим ее отображения, и о том, как это делать, мы расскажем
Типы для хранения даты и времени
Типы для хранения даты и времени Типы для хранения даты и времени изменились в версии InterBase 6.x и его клонах по сравнению с 4.x и 5.x. Чтобы не путаться в исторических хитросплетениях с этими типами, рассмотрим ситуацию именно в 6-й версии InterBase, а затем на основе этого кратко
7.10. Контроль даты и времени
7.10. Контроль даты и времени В разделе 7.5 было показано, что стандартные функции не проверяют корректность даты, а «переносят» ее вперед, если необходимо. Например, 31 ноября становится 1 декабря.Иногда такое поведение даже желательно. А если нет, то спешу обрадовать:
7.21. Форматирование и печать даты и времени
7.21. Форматирование и печать даты и времени Для получения канонического представления даты и времени служит метод asctime; У него есть синоним ctime.Аналогичный результат дает метод to_s. Точно такая же строка будет напечатана, если просто передать объект, представляющий дату и
5.1. Получение текущей даты и времени
5.1. Получение текущей даты и времени ПроблемаТребуется получить от пользователя компьютера текущую дату и время — либо в формате локального времени, либо в формате универсального глобального времени (Coordinated Universal Time (UTC). Григорианский календарь и високосные
3.4. Функции даты и времени
3.4. Функции даты и времени В данном разделе мы рассмотрим некоторые полезные функции, выполняющие различные операции с датами: получение текущей даты и/или времени, получение отдельных компонентов даты и/или времени, арифметические операции с датами (сложение, вычитание)
ГЛАВА 10. Типы даты и времени.
ГЛАВА 10. Типы даты и времени. Firebird поддерживает в диалекте 3 типы данных DATE, TIME и TIMESTAMP. В диалекте 1 поддерживается только один тип данных, подобный TIMESTAMP, который, хотя и называется DATE, не является взаимозаменяемым с типом DATE диалекта 3. DATE В диалекте 3 DATE хранит одну дату без
Настройка даты и времени
Настройка даты и времени Переходим к настройке даты и времени. Пожалуй, эта операция одна из самых простых среди изменений параметров работы Windows. Произвести ее можно, выбрав значок Дата и время из подраздела Дата, время, язык и региональные настройки на Панели управления.
Настройка даты и времени
Настройка даты и времени Для настройки даты и времени щелкните правой кнопкой мыши на значке часов в области уведомлений и выберите пункт Настройка даты/времени. Чтобы изменить показания часов или текущую дату, вам понадобятся полномочия администратора компьютера.