Reputation: 39
When I Execute the query below in an sql server, from visual basic, it runs correctly and returns my data. But when I write fill query in my code it gets an exception
Syntax error converting datetime from character string
I think the error is in the where
clause
this is my query:
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))
Upvotes: 2
Views: 538
Reputation: 25112
Try casting or converting your date1 and date2 like so.
CAST(@date1 as DATE)
You could also use CONVERT()
for specific formats.
Upvotes: 1