次のクエリをSQL ServerでVisual Basicから実行すると、正しく実行され、データが返されます。私はそれが文字列DateAdd関数文字列からdatetimeを変換するときにエラーが発生します
からdatetime型に変換例外
構文エラーを取得する私のコードでクエリを埋める書くときしかし、私は、これは私のクエリでエラーが
where
句でだと思います。
SELECT Maint_TaskSheetDetails.TaskId, DATEADD(dd, (SELECT MaintenanceRate FROM Maint_ItemTasks WHERE (TaskId = Maint_TaskSheetDetails.TaskId)), Maint_TaskSheets.SheetMaintenanceDate) AS Expr1, Maint_ItemTasks_5.TaskName, Maint_Items.ItemName, All_CostCenter.CostCenterName FROM Maint_TaskSheets INNER JOIN Maint_TaskSheetDetails ON Maint_TaskSheets.TaskSheetId = Maint_TaskSheetDetails.TaskSheetId INNER JOIN Maint_ItemTasks AS Maint_ItemTasks_5 ON Maint_TaskSheetDetails.TaskId = Maint_ItemTasks_5.TaskId INNER JOIN Maint_Items ON Maint_TaskSheetDetails.ItemId = Maint_Items.ItemId INNER JOIN All_CostCenter ON Maint_TaskSheets.CostCenterId = All_CostCenter.CostCenterID **WHERE (@Date1 <= DATEADD(dd, (SELECT MaintenanceRate FROM Maint_ItemTasks AS Maint_ItemTasks_3 WHERE (TaskId = Maint_TaskSheetDetails.TaskId)), Maint_TaskSheets.SheetMaintenanceDate)) AND (@Date2 >= DATEADD(dd, (SELECT MaintenanceRate FROM Maint_ItemTasks AS Maint_ItemTasks_2 WHERE (TaskId = Maint_TaskSheetDetails.TaskId)), Maint_TaskSheets.SheetMaintenanceDate))** UNION ALL SELECT Maint_ItemTaskDetails.TaskId, DATEADD(dd, (SELECT MaintenanceRate FROM Maint_ItemTasks AS Maint_ItemTasks_1 WHERE (TaskId = Maint_ItemTaskDetails.TaskId)), Maint_ItemTaskDetails.MaintenanceStartingDate) AS Expr1, Maint_ItemTasks_4.TaskName, Maint_Items_1.ItemName, All_CostCenter_1.CostCenterName FROM Maint_ItemTaskDetails INNER JOIN Maint_ItemTasks AS Maint_ItemTasks_4 ON Maint_ItemTaskDetails.TaskId = Maint_ItemTasks_4.TaskId INNER JOIN Maint_Items AS Maint_Items_1 ON Maint_ItemTasks_4.ItemId = Maint_Items_1.ItemId INNER JOIN All_CostCenter AS All_CostCenter_1 ON Maint_ItemTaskDetails.CostCenterId = All_CostCenter_1.CostCenterID **WHERE (@Date1 <= DATEADD(dd, (SELECT MaintenanceRate FROM Maint_ItemTasks AS Maint_ItemTasks_1 WHERE (TaskId = Maint_ItemTaskDetails.TaskId)), Maint_ItemTaskDetails.MaintenanceStartingDate)) AND (@Date2 >= DATEADD(dd, (SELECT MaintenanceRate FROM Maint_ItemTasks AS Maint_ItemTasks_1 WHERE (TaskId = Maint_ItemTaskDetails.TaskId)), Maint_ItemTaskDetails.MaintenanceStartingDate))** AND (Maint_ItemTaskDetails.TaskId NOT IN (SELECT Maint_TaskSheetDetails_1.TaskId FROM Maint_TaskSheetDetails AS Maint_TaskSheetDetails_1 INNER JOIN Maint_TaskSheets AS Maint_TaskSheets_1 ON Maint_TaskSheetDetails_1.TaskSheetId = Maint_TaskSheets_1.TaskSheetId))
日付は実際にdatetimeとして保存されていますか?dateまたはdatetimeの日付変数ですか? – scsimon
あなたのdate1とdate2がVARCHAR – scsimon
であると思われます。私のコードでfill関数を使用すると、date1とdate2がvarchar(文字列)として入力されます。 –