Hi,
I'm trying to test for date values in a varchar field. Unfortunately this is inherited in this manner and
I need to run a query based on this field (MAT_Date) and a 'YYYY' field MAT_Year to populate
a third field (MAT_Period) in the same table with (4 week) period values.
[u]
Field properties</u>
MAT YEAR = varchar (255)
MAT_DATE = varchar (50)
MAT_Period = varchar (50)
I thought of using the following code, but there are some Null values where in the resulting MAT_Period column.
(i.e
Where
MAT YEAR = 2003
MAT_DATE = 29/09/2002
MAT_Period = Null
AND
Where
MAT YEAR = 2003
MAT_DATE = 29/09/2002
MAT_Period = Null
)
Code:
use crm_marketing
go
UPDATE dbo.progress_movhdrmat_date
SET [MAT_Period] =
--Year 2003
CASE WHEN dbo.progress_movhdrmat_date.[MAT Year] = '2003' AND
dbo.progress_movhdrmat_date.[MAT_Date] >= '15/09/2002' AND
dbo.progress_movhdrmat_date.[MAT_Date] <= '12/10/2002'
THEN '01'
WHEN dbo.progress_movhdrmat_date.[MAT Year] = '2003' AND
dbo.progress_movhdrmat_date.[MAT_Date] >= '13/10/2002' AND
dbo.progress_movhdrmat_date.[MAT_Date] <= '09/11/2002'
THEN '02'
END
FROM dbo.progress_movhdrmat_date
I then tried to format(Mask) the MAT_Date field as a DATE type:
Code:
use crm_marketing
go
UPDATE dbo.progress_movhdrmat_date
SET [MAT_Period] =
--Year 2007
WHEN dbo.progress_movhdrmat_date.[MAT Year] = '2003' AND
CAST(dbo.progress_movhdrmat_date.[MAT_Date] AS SMALLDATETIME) >= '15/09/2002' AND
CAST(dbo.progress_movhdrmat_date.[MAT_Date] AS SMALLDATETIME) <= '12/10/2002'
THEN '01'
WHEN dbo.progress_movhdrmat_date.[MAT Year] = '2003' AND
CAST(dbo.progress_movhdrmat_date.[MAT_Date] AS SMALLDATETIME) >= '13/10/2002' AND
CAST(dbo.progress_movhdrmat_date.[MAT_Date] AS SMALLDATETIME) <= '09/11/2002'
THEN '02'
END
FROM dbo.progress_movhdrmat_date
But got the following error message displayed:
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.
The statement has been terminated.
Any ideas please?
Thanks in advance,
Neal
A Northern Soul