我使用以下查询从一个表中获取日期并插入到另一个表中。
INSERT INTO InstallmentPaymentHistory
VALUES('DateSold')
SELECT CONVERT(VARCHAR(11), s.DateSold, 113) AS DateSold
FROM SalesInvoice s
WHERE s.SalesInvoiceID = 9;
但出现错误
从字符串转换日期和/或时间时转换失败
我也尝试过
INSERT INTO InstallmentPaymentHistory
VALUES('YYYY.MM.DD')
SELECT CONVERT(VARCHAR(11), s.DateSold, 113) AS DateSold
FROM SalesInvoice s
WHERE s.SalesInvoiceID = 9;
但是我遇到同样的错误。
表#1
SalesInvoiceID CustomerID SoldDate TotalBill
-------------------------------------------------------
1 3840 2018.03.22 20000
2 4581 2018.04.11 80000
3 4420 2018.05.13 60000
表#2
InstallmentPaymentID SalesInvoiceID InstallmentNo DueDate PaymentDdate
---------------------------------------------------------------
1 2 1 2018.03.22 2018.3.22
2 2 2 2018.04.11 2018.3.22
3 2 3 2018.05.13 2018.3.22
答案 0 :(得分:3)
不太清楚您要使用这些命令做什么……
如果您想使用SELECT
并结合一些固定值,则应该使用类似以下的内容:
INSERT INTO dbo.InstallmentPaymentHistory (specify-the-list-of-columns-here!)
SELECT
-- provide the fixed values here, first
11, 9, 2, 'DateSold', '20180306', 6000,
-- then the "calculated/converted" value from your other table
CONVERT(VARCHAR(11), s.DateSold, 113)
FROM
dbo.SalesInvoice s
WHERE
s.SalesInvoiceID = 9;
另外:您的帖子中还不清楚日期字符串2018.3.6
是指6月3日还是3月6日-但我想建议始终使用改编过的ISO-8601格式,即YYYYMMDD
(不带破折号或任何东西!)。
因此,对于3月6日,请使用20180306
,对于6月3日,请使用20180603