Создайте столбец datetime в SQL Server 2008 со значением по умолчанию как текущая временная метка UTC

Я создаю таблицу в SQL Server 2008 следующим образом:

create table Dummy
(
   id int,
   status int,
   node_id varchar(512),
   createdDTTM datetime NOT NULL default CURRENT_TIMESTAMP
);

Однако я хочу указать часовой пояс UTC по умолчанию. Я знаю, что в postgreSQL у нас есть что-то вроде createdDTTM TIMESTAMP NOT NULL DEFAULT (now() at time zone 'utc')

Можем ли мы сделать подобное здесь?

Ответ 1

В течение времени с информацией о часовом поясе используйте DATETIMEOFFSET в SQL Server ( 2008 и новее):

create table dbo.Dummy
(
   id int,
   status int,
   node_id varchar(512),
   createdDTTM DateTimeOffset NOT NULL default SYSDATETIMEOFFSET()
);

Используя SYSDATETIMEOFFSET(), вы получаете текущую дату и время по умолчанию как DATETIMEOFFSET (в локальном часовом поясе, на котором находится ваш сервер) из SQL Server,

Или, может быть, вы ищете SYSUTCDATETIME(), который дает вам текущую дату и время в формате UTC? Это отлично работает с столбцами DATETIME2(n) или DATETIMEOFFSET (в SQL Server 2008 и новее, я бы рекомендовал больше не использовать DATETIME)