Вставка DateTime в SQL скрипт - PullRequest
0 голосов
/ 03 апреля 2020

Я пишу SQL скрипт для регистрации компонентов в базе данных. Один из них требует, чтобы DateTime (с прошлого года) был вставлен как одно из значений в таблицу, например:

INSERT INTO ComponentTable (ComponentId, Setting, [Value]) VALUES ('id', 'StartDate', ... )

C#, который я ранее использовал для вставить значение было DateTime.Today.AddDays(-365).ToString() (до переключения на базу данных).

Есть ли способ добавить то же самое в скрипт SQL выше?

Спасибо

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Эта статья показывает и объясняет необходимые вам функции SQL Дата / время на сервере:

Типы и функции данных даты и времени (Transact- SQL)

В вашем случае это может работать:

INSERT INTO ComponentTable (ComponentId, Setting, [Value]) VALUES ('id', 'StartDate', DATEADD(DAY, -365, GETDATE()))

Обратите внимание на следующее:

  1. Ранее вы определили значение даты / времени в своем клиентском приложении (C#) , таким образом, используя значение даты / времени вашего клиентского компьютера. При использовании функциональности SQL Server вместо него будет использоваться системная дата / время компьютера, на котором запущен экземпляр SQL Server. (Я считаю это преимуществом.)
  2. Рекомендуется хранить значения даты / времени в базе данных таким образом, чтобы они не задавались по регионам c. Поэтому включение часового пояса может быть важно, если у вас несколько клиентов в разных часовых поясах. По моему мнению, сохранение значений даты / времени UT C в базе данных (с использованием GETUTCDATE() вместо GETDATE() и преобразование полученного значения в клиентских приложениях C# в местное время (с использованием DateTime.ToLocalTime() функция) может быть полезным.
0 голосов
/ 03 апреля 2020

Я попробовал следующее, это дает вам дату 365 дней назад; это то, что вы хотите?

CREATE TABLE test (ID serial PRIMARY KEY, startdate DATE);
INSERT INTO test (startdate)VALUES (date(now()) - integer '365');

См. документы: https://www.postgresql.org/docs/9.0/functions-datetime.html#FUNCTIONS -DATETIME-EXTRACT

Если вы хотите ровно один год (забота о високосных годах ) тогда вам, вероятно, потребуется использовать «извлечение», чтобы получить год, затем вычесть один и восстановить дату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...