Datetime (transact-sql)

Модуль time

Модуль основан на «эпохе Unix», которая началась 1 января 1970 года:

>>> import time
>>> print(time.gmtime(0))
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

Функция возвращает время в секундах по Гринвичу, начиная с эпохи Unix, как число с плавающей запятой:

>>> time.time()
1524561056.103065

Функция преобразует время, выраженное в секундах с начала эпохи Unix, в строку вида «Tue Apr 24 10:36:06 2018»:

>>> print(time.ctime())
Tue Apr 24 10:36:06 2018

Функция возвращает время по Гринвичу как объект

>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=9, tm_min=6, tm_sec=29, tm_wday=1, tm_yday=114, tm_isdst=0)

Функция возвращает местное время (с учетом часового пояса) как объект

>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=12, tm_min=6, tm_sec=51, tm_wday=1, tm_yday=114, tm_isdst=0)

Свойство показывает смещение часового пояса в секундах к западу от нулевого меридиана. Если часовой пояс находится восточнее, смещение отрицательно:

>>> time.altzone
-14400

Функция приостановливает выполнение скрипта на определенное количество секунд.

Свойства и методы класса

  • — смещение часового пояса в секундах от нулевого меридиана.
  • — возвращает текущее время в секундах по Гринвичу, прошедшее с начала эпохи Unix.
  • — возвращает строкове представление переданной либо текущей даты.
  • — возвращает строковое представление текущего местного времени.
  • — возвращает объект , текущего или переданного времени по Гринвичу.
  • — возвращает объект , текущего или переданного времени. Представляющий местное время с начала эпохи Unix.
  • — преобразует кортеж или объект во время в секундах.
  • — приостановить выполнение программы на заданное количество секунд.
  • — преобразует кортеж или в строку по формату.

Using the Python datetime Module

As you can see, working with dates and times in programming can be complicated. Fortunately, you rarely need to implement complicated features from scratch these days since many open-source libraries are available to help out. This is definitely the case in Python, which includes three separate modules in the standard library to work with dates and times:

  1. outputs calendars and provides functions using an idealized Gregorian calendar.
  2. supplies classes for manipulating dates and times.
  3. provides time-related functions where dates are not needed.

In this tutorial, you’ll focus on using the Python module. The main focus of is to make it less complicated to access attributes of the object related to dates, times, and time zones. Since these objects are so useful, also returns instances of classes from .

is less powerful and more complicated to use than . Many functions in return a special instance. This object has a named tuple interface for accessing stored data, making it similar to an instance of . However, it doesn’t support all of the features of , especially the ability to perform arithmetic with time values.

provides three classes that make up the high-level interface that most people will use:

  1. is an idealized date that assumes the Gregorian calendar extends infinitely into the future and past. This object stores the , , and as attributes.
  2. is an idealized time that assumes there are 86,400 seconds per day with no leap seconds. This object stores the , , , , and (time zone information).
  3. is a combination of a and a . It has all the attributes of both classes.

Модуль datetime

Модуль содержит классы:

Также существует класс , который применяется для работы с часовыми поясами.

Класс datetime.date

Класс принимает три аргумента: год, месяц и день.

>>> import datetime
>>> date = datetime.date(2017, 4, 2)
>>> date.year
2017
>>> date.month
4
>>> date.day
2

Давайте посмотрим, какой сейчас день:

>>> today = datetime.date.today()
>>> today.year
2018
>>> today.month
4
>>> today.day
21

Класс datetime.datetime

Класс принимает аргументы: год, месяц, день, час, минута, секунда и микросекунда.

>>> date_time = datetime.datetime(2017, 4, 21, 13, 30, 10)
>>> date_time.year
2017
>>> date_time.month
4
>>> date_time.day
21
>>> date_time.hour
13
>>> date_time.minute
30
>>> date_time.second
10

Давайте посмотрим, какое сейчас время:

>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2018, 4, 21, 12, 43, 27, 786725)
>>> today.hour
12
>>> today.minute
43
>>> datetime.datetime.now() # местное время
datetime.datetime(2018, 4, 24, 13, 2, 39, 17479)
>>> datetime.datetime.utcnow() # время по Гринвичу
datetime.datetime(2018, 4, 24, 10, 2, 47, 46330)

Получить из объекта отдельно дату и отдельно время:

>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2018, 4, 21, 13, 26, 54, 387462)
>>> today.date() # отдельно дата
datetime.date(2018, 4, 21)
>>> today.time() # отдельно время
datetime.time(13, 26, 54, 387462)

Классы и содержат метод , который позволяет создавать строку, отображающую время в более понятной для человека форме.

>>> today = datetime.date.today().strftime("%d.%m.%Y")
>>> today
'21.04.2018'
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "ru") # задаем локаль для вывода даты на русском языке
'ru'
>>> today = datetime.datetime.today().strftime("%A, %d.%m.%Y")
>>> today
'суббота, 21.04.2018'
Сокращенное название дня недели
Полное название дня недели
Сокращенное название месяца
Полное название месяца
Дата и время
День месяца
24-часовой формат часа
12-часовой формат часа
День года. Цифровой формат
Номер месяца. Цифровой формат
Минута. Цифровой формат
До полудня или после (AM или PM)
Секунда. Цифровой формат
Номер недели в году. Цифровой формат (с воскресенья)
День недели. Цифровой формат
Номер недели в году. Цифровой формат (с понедельника)
Дата
Время
Год без века. Цифровой формат
Год с веком. Цифровой формат
Временная зона
Знак процента

Методы класса :

  • — объект из текущей даты и времени; работает также, как и со значением .
  • — объект из текущей даты и времени, местное время.
  • — объект из текущей даты и времени, по Гринвичу.
  • — дата из стандартного представления времени.
  • — дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.
  • — объект из комбинации объектов и .
  • — преобразует строку в (так же, как и функция из модуля ).
  • — преобразует объект в строку согласно формату.
  • — объект даты (с отсечением времени).
  • — объект времени (с отсечением даты).
  • — возвращает новый объект с изменёнными атрибутами.
  • — возвращает из .
  • — количество дней, прошедших с 01.01.1970.
  • — возвращает время в секундах с начала эпохи Unix.
  • — день недели в виде числа, понедельник — 0, воскресенье — 6.
  • — день недели в виде числа, понедельник — 1, воскресенье — 7.
  • — кортеж (год в формате ISO, ISO номер недели, ISO день недели).
  • — красивая строка вида или, если ,
  • — возвращает строковое представление текущего местного времени.

Класс datetime.timedelta

Класс позволяет выполнять операции над датами — складывать, вычитать, сравнивать. Конструктор принимает именованные аргументы , , , , , , :

>>> delta = datetime.timedelta(days = 5, hours = 1, minutes = 1)
>>> delta
datetime.timedelta(5, 3660)

Интервал времени 5 дней, 1 час и 1 минута. Получить результат можно с помощью атрибутов , и (5 дней и 3660 секунд):

>>> delta.days
5
>>> delta.seconds
3660

Получить результат в секундах позволяет метод :

>>> today = datetime.datetime.today() # текущая дата
>>> today
datetime.datetime(2018, 4, 21, 15, 19, 2, 515432)
>>> future = datetime.datetime(2019, 4, 21, 15, 19, 2, 515432) # дата на один год больше
>>> delta = future - today
>>> delta
datetime.timedelta(365)
>>> delta.total_seconds() # 365 дней в секундах
31536000.0

Прибавить к текущей дате 10 дней, 10 часов и 10 минут:

>>> today = datetime.datetime.today()
>>> delta = datetime.timedelta(days = 10, hours = 10, minutes = 10)
>>> future = today + delta
>>> today # 21 апреля 2018 года, 15:29
datetime.datetime(2018, 4, 21, 15, 29, 29, 265954)
>>> future # 2 мая 2018 года, 01:39
datetime.datetime(2018, 5, 2, 1, 39, 29, 265954)

4.1. Модуль datetime¶

Основной функционал для работы с датами и временем сосредоточен в модуле datetime в виде следующих классов:

  • date
  • time
  • datetime

4.1.1. Класс date

Для работы с датами воспользуемся классом date, который определен в модуле datetime. Для создания объекта date мы можем использовать конструктор date, который последовательно принимает три параметра: год, месяц и день:

date(year, month, day)

Например, создадим какую-либо дату:

import datetime

yesterday = datetime.date(2017,5, 2)
print(yesterday)      # 2017-05-02

Если необходимо получить текущую дату, то можно воспользоваться методом today():

from datetime import date

today = date.today()
print(today)      # 2017-05-03
print("{}.{}.{}".format(today.day, today.month, today.year))      # 2.5.2017

С помощью свойств day, month, year можно получить соответственно день, месяц и год.

4.1.2. Класс time

За работу с временем отвечает класс time. Используя его конструктор, можно создать объект времени:

time()

Конструктор последовательно принимает часы, минуты, секунды и микросекунды. Все параметры необязательные, и если мы какой-то параметр не передадим, то соответствующее значение будет инициализироваться нулем:

from datetime import time

current_time = time()
print(current_time)     # 00:00:00

current_time = time(16, 25)
print(current_time)     # 16:25:00

current_time = time(16, 25, 45)
print(current_time)     # 16:25:45

4.1.3. Класс datetime

Класс datetime из одноименного модуля объединяет возможности работы с датой и временем. Для создания объекта datetime можно использовать следующий конструктор:

datetime(year, month, day )

Первые три параметра, представляющие год, месяц и день, являются обязательными. Остальные необязательные, и если мы не укажем для них значения, то по умолчанию они инициализируются нулем:

from datetime import datetime

deadline = datetime(2017, 5, 10)
print(deadline)     # 2017-05-10 00:00:00

deadline = datetime(2017, 5, 10, 4, 30)
print(deadline)     # 2017-05-10 04:30:00

Для получения текущих даты и времени можно вызвать метод now():

from datetime import datetime

now = datetime.now()
print(now)     # 2017-05-03 11:18:56.239443

print("{}.{}.{}{}{}".format(now.day, now.month, now.year, now.hour, now.minute))  # 3.5.2017  11:21

print(now.date())
print(now.time())

С помощью свойств day, month, year, hour, minute, second можно получить отдельные значения даты и времени. А через методы date() и time() можно получить отдельно дату и время соответственно.

Операции с датами

Последнее обновление: 05.05.2017

Фоматирование дат и времени

Для форматирования объектов date и time в обоих этих классах предусмотрен метод strftime(format). Этот метод принимает только один
параметр, указывающий на формат, в который нужно преобразовать дату или время.

Для определения формата мы можем использовать один из следующих кодов форматирования:

  • %a: аббревиатура дня недели. Например, Wed — от слова Wednesday (по умолчанию используются английские наименования)

  • %A: день недели полностью, например, Wednesday

  • %b: аббревиатура названия месяца. Например, Oct (сокращение от October)

  • %B: название месяца полностью, например, October

  • %d: день месяца, дополненный нулем, например, 01

  • %m: номер месяца, дополненный нулем, например, 05

  • %y: год в виде 2-х чисел

  • %Y: год в виде 4-х чисел

  • %H: час в 24-х часовом формате, например, 13

  • %I: час в 12-ти часовом формате, например, 01

  • %M: минута

  • %S: секунда

  • %f: микросекунда

  • %p: указатель AM/PM

  • %c: дата и время, отформатированные под текущую локаль

  • %x: дата, отформатированная под текущую локаль

  • %X: время, форматированное под текущую локаль

Используем различные форматы:

from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d"))             # 2017-05-03
print(now.strftime("%d/%m/%Y"))             # 03/05/2017
print(now.strftime("%d/%m/%y"))             # 03/05/17
print(now.strftime("%d %B %Y (%A)"))        # 03 May 2017 (Wednesday)
print(now.strftime("%d/%m/%y %I:%M"))       # 03/05/17 01:36

При выводе названий месяцев и дней недели по умолчанию используются английские наименования. Если мы хотим использовать текущую локаль, но то мы
можем ее предварительно установить с помощью модуля locale:

from datetime import datetime
import locale
locale.setlocale(locale.LC_ALL, "")

now = datetime.now()
print(now.strftime("%d %B %Y (%A)"))        # 03 Май 2017 (среда)

Сложение и вычитани дат и времени

Нередко при работе с датами возникает необходимость добавить к какой-либо дате определенный промежуток времени или, наоборот, вычесть некоторый период. И специально для
таких операций в модуле datetime определен класс timedelta. Фактически этот класс определяет некоторый период времени.

Для определения промежутка времени можно использовать конструктор timedelta:

timedelta(      )

В конструктор мы последовательно передаем дни, секунды, микросекунды, миллисекунды, минуты, часы и недели.

Определим несколько периодов:

from datetime import timedelta

three_hours = timedelta(hours=3)
print(three_hours)       # 3:00:00
three_hours_thirty_minutes = timedelta(hours=3, minutes=30)  # 3:30:00

two_days = timedelta(2)  # 2 days, 0:00:00

two_days_three_hours_thirty_minutes = timedelta(days=2, hours=3, minutes=30)  # 2 days, 3:30:00

Используя timedelta, мы можем складывать или вычитать даты. Например, получим дату, которая будет через два дня:

from datetime import timedelta, datetime

now = datetime.now()
print(now)                      # 2017-05-03 17:46:44.558754
two_days = timedelta(2)
in_two_days = now + two_days
print(in_two_days)              # 2017-05-05 17:46:44.558754

Или узнаем, сколько было времени 10 часов 15 минут назад, то есть фактически нам надо вычесть из текущего времени 10 часов и 15 минут:

from datetime import timedelta, datetime

now = datetime.now()
till_ten_hours_fifteen_minutes = now - timedelta(hours=10, minutes=15)
print(till_ten_hours_fifteen_minutes) 

Свойства timedelta

Класс timedelta имеет несколько свойств, с помощью которых мы можем получить временной промежуток:

  • days: возвращает количество дней

  • seconds: возвращает количество секунд

  • microseconds: возвращает количество микросекунд

Кроме того, метод total_seconds() возвращает общее количество секунд, куда входят и дни, и собственно секунды, и микросекунды.

Например, узнаем какой временной период между двумя датами:

from datetime import timedelta, datetime

now = datetime.now()
twenty_two_may = datetime(2017, 5, 22)
period = twenty_two_may - now
print("{} дней  {} секунд   {} микросекунд".format(period.days, period.seconds, period.microseconds))
# 18 дней  17537 секунд   72765 микросекунд

print("Всего: {} секунд".format(period.total_seconds()))
# Всего: 1572737.072765 секунд

Сравнение дат

Также как и строки и числа, даты можно сравнивать с помощью стандартных операторов сравнения:

from datetime import datetime

now = datetime.now()
deadline = datetime(2017, 5, 22)
if now > deadline:
    print("Срок сдачи проекта прошел")
elif now.day == deadline.day and now.month == deadline.month and now.year == deadline.year:
    print("Срок сдачи проекта сегодня")
else:
    period = deadline - now
    print("Осталось {} дней".format(period.days))

НазадВперед

Таблица форматов

Вы должны следовать приведенной ниже таблице форматов, чтобы использовать соответствующие директивы при указании параметра формата.

Директива Значение Пример вывода
%A День недели как полное название локали. Среда
%a День недели как сокращенное название локали. Пн, вт, ср
%w День недели в виде десятичного числа, где 0 — воскресенье, а 6 — суббота. 0,1,2,3,4… 6
%d День месяца в виде десятичного числа с нулями. 01,02,03… 31
% -d День месяца в виде десятичного числа. (Зависит от платформы) 1,2,3…
% b Месяц как сокращенное название языкового стандарта. Море
% B Месяц как полное название локали. марш
% m Месяц как десятичное число с нулями. 01,02… 12
% -m Месяц как десятичное число. (Зависит от платформы) 1,2,… 12
%y Год без века как десятичное число с нулями. 20 (на 2020 год)
% Y Год со столетием в виде десятичного числа. 2020, 2021 и др.
%H Час (в 24-часовом формате) как десятичное число с нулями. 01, 02,…
%-H Час (24-часовой формат) в виде десятичного числа. (Зависит от платформы) 1,2,3,…
%I Час (12-часовой формат) как десятичное число с нулями. 01, 02, 03,…
%-I Час (12-часовой формат) в виде десятичного числа. (Зависит от платформы) 1, 2, 3…
%p Локальный эквивалент AM или PM. ДО ПОЛУДНЯ ПОСЛЕ ПОЛУДНЯ
%M Минута в виде десятичного числа с нулями. 01, 02,… 59
% -M Минута как десятичное число. (Зависит от платформы) 1,2,3,… 59
% S Второй — десятичное число с нулями. 01, 02,… 59
% -S Секунда как десятичное число. (Зависит от платформы) 1, 2,… 59
% f Микросекунда в виде десятичного числа с нулями слева. 000000
%z Смещение UTC в форме + ЧЧММ или -ЧЧММ (пустая строка, если объект наивен). (пусто), +0000, -0400, +1030
%Z Название часового пояса (пустая строка, если объект наивный). (пусто), UTC, IST, CST
% j День года в виде десятичного числа с нулями. 1, 2, 3,… 366
% -j День года в виде десятичного числа. (Зависит от платформы) 1, 2, 3,… 366
% U Номер недели в году (воскресенье как первый день недели) в виде десятичного числа, дополненного нулями. Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. 1, 2, 3,… 53
%W Номер недели в году (понедельник как первый день недели) в виде десятичного числа. Все дни нового года, предшествующие первому понедельнику, считаются нулевой неделей. 1, 2, 3,… 53
% c Соответствующее представление даты и времени для локали. Ср 06 мая 12:23:56 2020
%x Соответствующее представление даты языкового стандарта. 06.05.20
%X Соответствующее временное представление локали. 12:23:56
%% Буквальный символ «%». %

datetime.timedelta

A object represents the difference between two dates or times.

Example 11: Difference between two dates and times

When you run the program, the output will be:


t3 = 201 days, 0:00:00
t6 = -333 days, 1:14:20
type of t3 = <class 'datetime.timedelta'>
type of t6 = <class 'datetime.timedelta'>

Notice, both t3 and t6 are of type.

Example 12: Difference between two timedelta objects

When you run the program, the output will be:


t3 = 14 days, 13:55:39

Here, we have created two objects t1 and t2, and their difference is printed on the screen.

When you run the program, the output will be:


t3 = -1 day, 23:59:39
t3 = 0:00:21

Example 14: Time duration in seconds

You can get the total number of seconds in a timedelta object using method.

When you run the program, the output will be:


total seconds = 435633.233423

You can also find sum of two dates and times using operator. Also, you can multiply and divide a object by integers and floats.

Описание типа данных datetime2

Property (Свойство) Значение
Синтаксис datetime2
Использование DECLARE @MyDatetime2 datetime2(7) CREATE TABLE Таблица1 ( Столбец1 datetime2(7) )
Формат строковых литералов по умолчанию (используется для клиента нижнего уровня) ГГГГ-ММ-ДД чч:мм:сс Дополнительные сведения см. в подразделе «Обратная совместимость для клиентов низкого уровня» следующего раздела.
Диапазон даты От 0001-01-01 до 31.12.99 С 1 января 1 года нашей эры до 31 декабря 9999 года нашей эры
Диапазон времени от 00:00:00 до 23:59:59.9999999
Диапазон смещения часового пояса None
Диапазоны элементов ГГГГ представляет собой четырехзначное число от 0001 до 9999, определяющее год. ММ — двузначное число от 01 до 12, представляющее месяц указанного года. Обозначение ДД состоит из двух цифр, представляющих день указанного месяца, и принимает значения от 01 до 31 в зависимости от месяца. Обозначение «чч» состоит из двух цифр, представляющих час, и принимает значения от 00 до 23. Обозначение «мм» состоит из двух цифр, представляющих минуту, и принимает значения от 00 до 59. Обозначение «сс» состоит из двух цифр, представляющих секунду, и принимает значения от 00 до 59. Обозначение n* может содержать от нуля до семи цифр, представляющих доли секунды, и принимает значения от 0 до 9999999. В Informatica доли секунды усекаются при n > 3.
Длина в символах Минимальная — 19 позиций (ГГГГ-ММ-ДД чч:мм:сс), максимальная — 27 позиций ((ГГГГ-ММ-ДД чч:мм:сс.0000000)
Точность, масштаб От 0 до 7 цифр, с точностью 100 нс. Точность по умолчанию составляет 7 цифр.
Объем памяти 1 6 байтов для представления точности меньше 3 цифр.7 байтов — для точности в 3 или 4 цифры.Для представления любых других значений точности требуется 8 байт 2.
Точность 100 наносекунд
Значение по умолчанию 1900-01-01 00:00:00
Календарь Григорианский
Определяемая пользователем точность в долях секунды Да
Учет и сохранение смещения часового пояса Нет
Учет перехода на летнее время Нет

1 Указанные значения относятся к несжатым rowstore. Использование сжатия данных или columnstore может изменить размер хранилища для каждого уровня точности. Кроме того, размер хранилища на диске и в памяти может различаться. Например, значения datetime2 при использовании пакетного режима всегда требует 8 байт в памяти.

2 При приведении значения datetime2 к значению varbinary к значению varbinary добавляется дополнительный байт для сохранения точности.

Сведения о метаданных типа данных см. в статье sys.systypes (Transact-SQL) или TYPEPROPERTY (Transact-SQL). В некоторых типах данных дат и времени точность и масштаб разные. Сведения о получении точности и масштаба для столбца см. в статье COLUMNPROPERTY (Transact-SQL), COL_LENGTH (Transact-SQL) или sys.columns (Transact-SQL).

Работа с часовыми поясами

К сожалению у меня нет большого опыта работы с часовыми поясами и примеры ниже не стоит рассматривать как лучшие практики. 

Библиотека datetime не хранит часовые пояса, данные о переводах часов (летнее и зимнее время) и високосных секундах. К тому же, некоторые страны, могут изменить время опираясь на локальные ситуации. Эти ситуации опасны, когда идет запись в базу данных. Для вывода в GUI, можно использовать datetime.datetime.now() или высчитывать часовой пояс из базы.

Для записи в базу данных мы можем использовать время UTC и отдельно считать часовой пояс:

Следующий пример вычислит разницу времени между UTC и локальным. Насколько я знаю он может не сработать на версиях Python < 3.3:

Для вычисления других часовых поясов можно использовать стороннюю библиотеку pytz, которая их хранит:

 Вывести все часовые пояса мы можем так:

На примере ниже я перевожу локальное время в часовой пояс Киева:

Рекомендую

datetime Time class

The Python datetime module has the time class, which helps us to work with the time and manipulate them. This example uses the Python time method to return 00:00:00.

datetime module time class output

The Python time class in the datetime module has the following 3 important attributes. 

  • time.min: It returns the earliest or minimum representable time.
  • time.max: Latest or maximum representable time.
  • time.resolution: Smallest possible difference between time.

Output of min, max, resolution functions in datetime time class

Create Time using Python time

Here, we are using the time function to construct or create a time with 10 hours, 22 minutes, and 33 seconds

datetime module time function output to create time

This Python time example is an extension of the above. Here, we are using the microseconds and the argument names as well.

datetime time function output

Python time attributes

This example shows the list of available time attributes in python. Here, hour attribute returns the Hour from a given time, minute, second, and microsecond

datetime time attributes output

Python date time timedelta

The datetime timedelta function predicts or return the past and future dates. In this example, we are returning the date and time after one year and two years before. Refer to Python timedelta.

datetime timedelta function output

Python date time strftime

The datetime strftime function formats the date in the specified format, and return the date as a string. Here, %Y-%m-%d’ means Year-Month-Day (2019-01-31). Refer to Python strftime.

datetime strftime output

Python strptime

The datetime strptime converts the string representation of the date to a regular date and time. Here, datetime.strptime(dt_str, ‘%d %B %Y’) means string date is passes in Day Month_Name Year format. Refer Python strptime.

datetime strptime output

Поддерживаемые форматы строковых литералов для типа данных datetime

В представленных ниже таблицах приводятся поддерживаемые форматы строковых литералов для типа данных datetime. За исключением ODBC, строковые литералы типа datetime заключаются в одинарные кавычки (‘), например ‘string_literaL’. Если язык среды не us_english, строковые литералы должны иметь формат N’string_literaL’.

Числовой Описание
Форматы даты 4/15/96 — (мдг) 4-15-96 — (мдг) 4.15.96 — (мдг) 4/96/15 — (мгд) 15/4/96 — (дмг) 15/96/4 — (дгм) 96/15/4 — (гдм) 96/4/15 — (гмд) Форматы времени 14:30 14:30 14:30 4am 16:00:00 Месяц в датах может указываться в числовом формате. Например, 5/20/97 обозначает двадцатое мая 1997 года. Используя числовой формат дат, указывайте месяц, день и год в виде строки со знаками косой черты (/), дефисами (-) или точками (.) в качестве разделителей. Эта строчка должна выглядеть следующим образом:число разделитель число разделитель число При использовании языковой настройки us_english порядком по умолчанию для даты является mdy (МДГ). Порядок даты можно изменить с помощью инструкции SET DATEFORMAT. Установка для SET DATEFORMAT определяет, как будут интерпретированы значения дат. Если порядок не соответствует конфигурации, значения не обрабатываются как даты. Неупорядоченные даты могут неправильно интерпретироваться как даты за пределами диапазона или даты с неправильными значениями. Например, 12/10/08 может быть интерпретировано как одна из шести различных дат в зависимости от установки DATEFORMAT. Четырехзначный год интерпретируется как год.
Алфавитный формат Описание
Apr 1996 Apr 15 96 Apr 1996 Apr 1996 15 Apr96 15 96 apr 1996 apr 1996 APR 1996 APR Можно указывать дату с полным именем месяца. Например, «апрель» или сокращение «Апр», заданное в текущем языке. Запятые не обязательны, регистр букв не учитывается. Некоторые рекомендации по применению алфавитных форматов даты: 1. Заключайте дату и время в одинарные кавычки (‘). Для всех языков, кроме английского, используйте «N’». 2. Символы, заключенные в квадратные скобки, являются необязательными. 3. Если указать две последние цифры года, значения, меньшие двух последних цифр значения параметра конфигурации сервера two digit year cutoff, будут относиться к столетию года усечения. Значения, большие или равные двум последним цифрам этого параметра, относятся к столетию, предшествующему столетию года усечения. Например, если значение параметра two digit year cutoff равно 2050 (по умолчанию), то год, обозначенный двумя цифрами 25, интерпретируется как 2025, а год, обозначенный двумя цифрами 50, — как 1950. Во избежание неоднозначности используйте четырехзначную запись года. 4. Если не указано число месяца, подразумевается первое число месяца. Параметр сеанса SET DATEFORMAT не применяется, если месяц указывается в алфавитном формате.
ISO 8601 Описание
ГГГГ-ММ-ДДТчч:мм:сс ГГГГММДД] Примеры: 1. 2004-05-23T14:25:10 2. 2004-05-23T14:25:10.487 Чтобы использовать формат ISO 8601, необходимо указать каждый элемент в этом формате, включая T, двоеточие (:) и точку (.), которые отображаются в этом формате. Квадратные скобки показывают, что доли секунд не являются обязательными. Временной компонент указан в 24-часовом формате. Символ T указывает на начало временной части значения datetime. Преимущество формата ISO 8601 заключается в том, что он является международным стандартом с однозначным представлением. Кроме того, на этот формат не влияют настройки SET DATEFORMAT и SET LANGUAGE.
Без разделителей Описание
ГГГГММДД чч:мм:сс
ODBC Описание
{ ts ‘1998-05-02 01:23:56.123’ } { d ‘1990-10-02′ } { t ’13:33:41’ } Интерфейс API ODBC определяет управляющие последовательности, представляющие значения даты и времени, называемые в ODBC метками времени. Этот формат меток времени ODBC также поддерживается определением языка OLE DB (DBGUID-SQL), поддерживаемым поставщиком Microsoft OLE DB для SQL Server. Приложения, использующие ADO, OLE DB или API-интерфейсы, основанные на ODBC, могут использовать этот формат отметок времени ODBC для представления даты и времени. Escape-последовательности меток времени ODBC имеют следующий формат: { literal_type ‘constant_value’ }: — literal_type определяет тип escape-последовательности. Метки времени имеют три описателя literal_type:1) d = только дата2) t = только время3) ts = метка времени (время + дата) — ‘constant_value’ является значением escape-последовательности. Значение constant_value должно соответствовать этим форматам для каждого literal_type.d : гггг-мм-ддt : чч:мм:ссts : гггг-мм-дд чч:мм:сс
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *