我遇到了这个错误
msg 8115,级别16,状态2,第18行
将表达式转换为int数据类型时出现算术溢出错误。
使用这个SQL查询语句:
DECLARE @year VARCHAR(4);
DECLARE @month VARCHAR(2);
-- START OF CONFIGURATION SECTION
-- THIS IS THE ONLY SECTION THAT SHOULD BE MODIFIED
-- SET THE YEAR AND MONTH PARAMETERS
SET @year = '2013';
SET @month = '3'; -- 1 = January.... 12 = Decemeber.
-- END OF CONFIGURATION SECTION
DECLARE @startDate DATE
DECLARE @endDate DATE
SET @startDate = @year + '-' + @month + '-01 00:00:00';
SET @endDate = DATEADD(MONTH, 1, @startDate);
SELECT
DATEPART(YEAR, dateTimeStamp) AS [Year]
, DATEPART(MONTH, dateTimeStamp) AS [Month]
, COUNT(*) AS NumStreams
, [platform] AS [Platform]
, deliverableName AS [Deliverable Name]
, SUM(billableDuration) AS NumSecondsDelivered
FROM
DeliveryTransactions
WHERE
dateTimeStamp >= @startDate
AND dateTimeStamp < @endDate
GROUP BY
DATEPART(YEAR, dateTimeStamp)
, DATEPART(MONTH, dateTimeStamp)
, [platform]
, deliverableName
ORDER BY
[platform]
, DATEPART(YEAR, dateTimeStamp)
, DATEPART(MONTH, dateTimeStamp)
, deliverableName
DATE
数据类型中使用YYYY-MM-DD
,那么是安全的。然而,在DATETIME
中,它是不安全的--不要以这种方式使用它!只使用YYYYMMDD
(没有破折号!)。为了演示,请在SQL Server Mgmt Studio中运行此小段代码:SET LANGUAGE german; SELECT CAST('2013-11-25' AS DATETIME)
- 您将收到一个德语错误消息,告诉您无法将字符串转换为DATETIME
。SELECT CAST('20131125' AS DATETIME)
(没有破折号!)可以正常工作。 - marc_s