我正在构建一个存储过程,当我尝试插入数据时,它会失败。这是插入:
INSERT INTO [AdminDB].[dbo].[DEFECTS_MAINTENANCE]([DATE], [Year], [Month], [Total])
SELECT
CONVERT(DATE, getdate()) AS 'Date',
DATENAME(yyyy, getdate()) AS 'Year',
DATENAME(mm, getdate()) AS 'Month',
COUNT([BG_BUG_ID]) AS 'Total'
FROM
[maint_maintenance_db].[td].[BUG]
WHERE
YEAR(DETECTION_DATE]) = YEAR(getdate())
AND MONTH([DETECTION_DATE]) = MONTH(getdate())
当我执行上面的代码时,我收到此错误:
消息241,级别16,状态1,过程usp_TC_TESTCYCL_ID_COUNT_PILOT_UCPATH,第10行
从字符串转换日期和/或时间时转换失败。
当我更改代码以使用CAST时,它可以正常工作,但不会正确返回值。以下是代码:
INSERT INTO [AdminDB].[dbo].[DEFECTS_MAINTENANCE]([DATE], [Year], [Month], [Total])
SELECT
CAST(getdate() AS Date),
CAST(getdate() AS datetime),
CAST(getdate() AS datetime),
COUNT([BG_BUG_ID]) AS 'Total'
FROM
[maint_maintenance_db].[td].[BUG]
WHERE
YEAR(DETECTION_DATE]) = YEAR(getdate())
AND MONTH([DETECTION_DATE]) = MONTH(getdate())
我怎样才能让它发挥作用?任何帮助表示赞赏!
由于
答案 0 :(得分:1)
看起来[月]是日期时间类型 这就是演员表演的原因: CAST(getdate()as datetime)
在使用转换的INSERT中,您试图将2位数字隐式转换为日期而且失败。
,datename(mm,getdate()) AS 'Month'
将月更改为整数或字符(2),您应该全部设置。