#sql #datetime #sql-insert #date-arithmetic
#sql #дата-время #sql-вставка #дата-арифметика
Вопрос:
У меня есть этот оператор insert, который должен добавить строку в эту скопированную таблицу. Итак, моя идея заключалась в том, чтобы использовать функцию GetDate для получения сегодняшней даты, а для другого столбца добавить к ней 30 дней. Когда я получил ошибку, я попытался преобразовать ее, но я не совсем понимаю, в чем проблема. В столбце используется формат smalldatetime.
INSERT INTO InvoicecopyKJ VALUES
(32, 'AX-014-027',
GETDATE(),
4834.58, 0.00, 0.00, 2,
GETDATE() 30,
'NULL'
);
Ответ №1:
Кажется, вы хотите dateadd()
:
insert into invoicecopykj
values (
32,
'ax-014-027',
getdate(),
4834.58,
0.00,
0.00,
2,
dateadd(day, 30, getdate()),
null
);
Примечания
getdate()
возвращает дату и время. Если вам нужна только часть даты, используйтеconvert(date, getdate())
вместо- предположительно, вам нужен литерал
null
в качестве значения в последнем столбце, а не литеральная строка'null'
(окружающие одинарные кавычки превращают ее в строку) - рекомендуется всегда перечислять целевые столбцы для
insert
, напримерinsert into invoicecopykj (col1, col2, ...)
Комментарии:
1. Спасибо! Я протестировал это, и это сработало. Да, я не знал об
dateadd
этом, но я постараюсь быть более осведомленным о различных функциях в будущем. Но как в этом случае будет работать перечисление столбцов?2. @HubertH.: это означает перечисление столбцов вашей таблицы
invoicecopykj
.