如何从一个表中获取日期并插入到另一个表中

时间:2018-10-06 12:19:27

标签: sql-server

我使用以下查询从一个表中获取日期并插入到另一个表中。

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

1 个答案:

答案 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