2012-04-26 117 views
3

我下面的SQL腳本拋出錯誤算術溢出錯誤將表達式轉換爲數據類型日期時間執行將表達式轉換爲數據類型日期時間算術溢出錯誤在SQL Server 2008

我在如此搜查了這個錯誤,谷歌,但我無法找出解決方案。

下面是我的Longggggggggg SQL查詢

DECLARE @TimeByDay DATETIME 
DECLARE @TimeByDay2 DATETIME 

SET @TimeByDay = '1/1/2012' 
SET @TimeByDay2 = '12/31/2014' 


SELECT p1.ProjectName , 
     p1.EnterpriseProjectTypeName , 
     p1.[Legacy System ID] , 
     p1.ProjectDescription , 
     p1.ProjectOwnerName , 
     p1.[Gate Approvers] , 
     p1.[Team Members] , 
     p1.[Project Sponsor] , 
     p1.[Idea Project Type] , 
     p1.[Compliance Project] , 
     p1.[Product Category] , 
     p1.[Relevant Functional Area] , 
     p1.Initiative , 
     p1.[OPEX Transformation] , 
     p1.[Commodity Type] , 
     p1.[LSS Training Project] , 
     p1.[Project Status Comments] , 
     p1.[Project Status] , 
     p1.Phase , 
     p1.[Innovation Matrix Class] , 
     p1.[Legacy Project Manager] , 
     p1.[AOP Line Number] , 
     p1.[AOP Project Name] , 
     p1.[Approval Level] , 
     p1.Assumptions , 
     p1.[Belt Name] , 
     p1.[Benefits Impact] , 
     p1.[Bus Impact or Bus Y] , 
     p1.[Business Sponsor] , 
     p1.[Code Name] , 
     p1.[Complexity Risk Level] , 
     p1.[Complexity Risk Score] , 
     p1.[Critical to Quality] , 
     p1.Deliverables , 
     p1.[Development Risk] , 
     p1.[Estimated Duration] , 
     p1.[Financial Uncertainty] , 
     p1.[Financial Rep] , 
     p1.[External Dependencies] , 
     p1.[Financial Risk Level] , 
     p1.[Financial Risk Score] , 
     p1.[Idea Functional Area] , 
     p1.[Idea Beneftting Location] , 
     p1.[Idea Reviewer Comments] , 
     p1.[Idea Comments] , 
     p1.[Idea Sector] , 
     p1.[Idea Submitters Email] , 
     p1.[Idea Submission Date] , 
     p1.[Idea Submitter Phone] , 
     p1.[Idea Reviewer Name] , 
     p1.[Idea Description_] , 
     p1.[Idea Est Revenue Benefit] , 
     p1.[Idea Name] , 
     p1.[Idea Product Category] , 
     p1.[Idea Est Savings Benefit] , 
     p1.[Idea Number] , 
     p1.[Idea Review Date] , 
     p1.[Idea Est Balance Sheet Benefit] , 
     p1.[Idea Est Investment] , 
     p1.[Idea Submitter Email] , 
     p1.[IR Project Type] , 
     p1.[Idea Sources] , 
     p1.[Idea Submitter] , 
     p1.[Implementation Risk] , 
     p1.[Technology Capabilities Risk] , 
     p1.[Market Uncertainty] , 
     p1.[Legal Regulatory Risk] , 
     p1.[Investment Risk] , 
     p1.Mentor , 
     p1.[Out of Scope] , 
     p1.[Project Scope] , 
     p1.[Project Start Date] , 
     p1.[Project Finish Date] , 
     p1.[Mandated by whom?] , 
     p1.[Reason for Action] , 
     p1.[Project Champion] , 
     p1.[Process Owner] , 
     p1.[Target State (Box 3 of A3)] , 
     p1.[Problem Statement] , 
     p1.[Project Interaction] , 
     p1.[Strategic Goal/Business Case] , 
     p1.[Sending Leader(s)] , 
     p1.[Receiving Leader(s)] , 
     p1.[Process Definition] , 
     p1.[Things That Can Be Improved] , 
     p1.[Idea Estimated Duration] , 
     p1.[ST IT Cost Center] , 
     p1.[Top Project] , 
     p1.[Reason For Action (Box 1 of A3)] , 
     p1.[Initial State] , 
     p1.[Impact of not meeting mandate] , 
     p1.[Primary Proponent Department] , 
     p1.[Project Financial Benefit Status] , 
     p1.[Project Resource Status] , 
     p1.[Project Schedule Status] , 
     p1.[Project Investment Status] , 
     p1.[Project Success Factors] , 
     p1.[Support Required] , 
     p1.[Project Milestones] , 
     p1.[Project Constraints] , 
     p1.[Other Funding Source] , 
     p1.[Project Cost Center] , 
     p1.[Initial State (Box 2 of A3)] , 
     p1.CostCenterName , 
     p1.CostCategoryName , 
     YEAR(p1.TimeByDay) AS Year , 
     MONTH(p1.TimeByDay) AS Month , 
     p1.Actuals , 
     p1.Budget , 
     p1.Forecast , 
     p1.PhaseName , 
     p1.ProjectUID , 
     CONVERT(VARCHAR(20), p1.ProjectCreatedDate, 101) AS ProjectCreatedDate , 
     CONVERT(VARCHAR(20), p1.ProjectModifiedDate, 101) AS ProjectModifiedDate 
FROM [IR.ST.EPM Custom Flds and Financial Data] p1 
--WHERE p1.TimeByDay >= CAST(@TimeByDay AS DATETIME) 
--  AND p1.TimeByDay <= CAST(@TimeByDay2 AS DATETIME) 
WHERE p1.timebyday >= @TimeByDay 
     AND p1.timebyday <[email protected] 
     AND p1.StageEntryDate IS NOT NULL 
     AND p1.StageCompletionDate IS NOT NULL 

我不知道這裏需要改變。

對不起復制!

+0

是你timebyday場在你的表中的日期時間字段? – Taryn 2012-04-26 11:39:12

+1

確保所有與日期時間相關的列都在'datetime'數據類型中。否則,必須有一些超出日期範圍的數據。 – 2012-04-26 11:57:35

+0

@bluefeet - TimeByDay是數據庫中的DATETIME – 2012-04-26 12:18:37

回答

2

這是您的腳本的開始,您將字符串分配給DATETIMEs。這涉及隱式轉換,就好像RDBMS在那裏爲您添加CONVERT()一樣。在你的情況下,它失敗了。

嘗試一個更普遍的日期時間格式,而不是...

SET @TimeByDay = '20120101' 
SET @TimeByDay2 = '20141231' 
+0

沒有用,而且用戶輸入美國格式的日期(如問題中指定的) – 2012-04-26 11:33:11

+0

@SmithPascalJr - 如果字符串是用戶提供的, 'd建議在將它們作爲DATETIME參數提供給SQL Server之前,將它們轉換爲日期數據類型,這樣可以防止SQL注入並確保數據的有效性,但是現在看來這是一個側面問題。在你的問題中提到;)] * – MatBailie 2012-04-26 11:37:16

+0

@SmithPascalJr。 - 縮小範圍...如果你只是運行DECLARE和SET語句,它們確實有效嗎?如果沒有,'CONVERT(DATETIME,'12/31/2014',101)'有幫助嗎?什麼樣的數據類型是'TimeByDay'字段? – MatBailie 2012-04-26 11:38:33