INSERT语句的日期格式

时间:2014-12-27 11:48:42

标签: sql sql-server

以下SELECT语句有效,并以正确的FORMAT格式返回日期。

SELECT 
' - '+c.[customercli] 
,c.[customerlookup]  
,c.[customername] 
,c.[linedescription] 
,c.[Sum of buy price] 
,c.[Sum of sell price]  
,c.[qty] 
,c.[Billingmonth] 
,FORMAT([FromDate],'dd/MM/yyyy') 
,FORMAT([ToDate],'dd/MM/yyyy') 

FROM [MasterBill].[dbo].[DaisyCallsCurrentBill] c

但是当我运行以下INSERT / SELECT语句时,我收到以下错误。

“从字符串转换日期和/或时间时转换失败。”

INSERT INTO [MasterBill].[dbo].[CurrentBillMaster]
([identifier]
,[customer id]
,[customer name]
,[description]
,[buy price]
,[sell price]
,[qty]
,[Billingmonth]
,[FromDate]
,[ToDate]) 

SELECT 
' - '+c.[customercli] 
,c.[customerlookup]  
,c.[customername] 
,c.[linedescription] 
,c.[Sum of buy price] 
,c.[Sum of sell price]  
,c.[qty] 
,c.[Billingmonth] 
,FORMAT([FromDate],'dd/MM/yyyy') 
,FORMAT([ToDate],'dd/MM/yyyy') 

FROM [MasterBill].[dbo].[DaisyCallsCurrentBill] c

两个表上的FromDate和ToDate都配置了“date”类型

非常感谢任何帮助。

更新:日期在[dbo]上采用以下格式。[DaisyCallsCurrentBill]表格2014-09-01 - 我只是想将此更改为01/09/2014

2 个答案:

答案 0 :(得分:2)

这里看起来你正在插入字符串类型的日期。删除格式功能,它应该工作。为什么? 格式化只是表示日期的一种方式。数据库以自己的方式存储日期,您无法更改它。

答案 1 :(得分:0)

由于您选择date字段并尝试将其插入另一个date字段,格式化无意义,不应使用:

INSERT INTO [MasterBill].[dbo].[CurrentBillMaster]
([identifier]
,[customer id]
,[customer name]
,[description]
,[buy price]
,[sell price]
,[qty]
,[Billingmonth]
,[FromDate]
,[ToDate]) 

SELECT 
' - '+c.[customercli] 
,c.[customerlookup]  
,c.[customername] 
,c.[linedescription] 
,c.[Sum of buy price] 
,c.[Sum of sell price]  
,c.[qty] 
,c.[Billingmonth] 
,c.[FromDate], -- Note: no formatting
,c.[ToDate] -- here too

FROM [MasterBill].[dbo].[DaisyCallsCurrentBill] c