Data Type Conversion
Can someone kindly help me please. Please see the query below:
select
case when Arrival_Date
between 01/04/2008
and 31/03/2009
then '20082009'
when Arrival_Date
between 01/04/2009
and 31/03/2010
then '20092010'
when Arrival_Date
between 01/04/2010
and 31/03/2011
then '20102011'
when Arrival_Date
between 01/04/2011
and 31/03/2012
then '20112012'
when Arrival_Date
between 01/04/2012
and 31/03/2013
then '20122013'
when Arrival_Date
between 01/04/2013
and 31/03/2014
then '20132014'
else
'NULL' end
as 'ContractFinancialYear'
from dbo.AE_SUSArrivalDate
When I try to run this query I get the following error:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '01/01/2009' to data type int.
The above query runs against a view which I created with
SELECT
CONVERT(varchar(10), Arrival_Date, 103) AS Arrival_Date
FROM
dbo.SUS_AccidentAndEmergency
How can I address this problem so that the query can run without any errors?
Many thanks.Mpumelelo
July 4th, 2011 7:24am
first: your question is not related to SSIS forum, you should ask it in t-sql forum.
second: (answer); try this one:
select case when Arrival_Date between '01/04/2008' and '31/03/2009' then '20082009'
when Arrival_Date between '01/04/2009' and '31/03/2010' then '20092010'
when Arrival_Date between '01/04/2010' and '31/03/2011' then '20102011'
when Arrival_Date between '01/04/2011' and '31/03/2012' then '20112012'
when Arrival_Date between '01/04/2012' and '31/03/2013' then '20122013'
when Arrival_Date between '01/04/2013' and '31/03/2014' then '20132014'
else 'NULL' end as 'ContractFinancialYear'
from dbo.AE_SUSArrivalDate
this will solve the error but maybe results seems weird and the reason is that you compared dates as strings. It is better to compare all in date mode like this:
select case when convert(date,Arrival_Date between convert(date,'01/04/2008') and convert(date,'31/03/2009') then '20082009'
when convert(date,Arrival_Date) between convert(date,'01/04/2009') and convert(date,'31/03/2010') then '20092010'
when convert(date,Arrival_Date) between convert(date,'01/04/2010') and convert(date,'31/03/2011') then '20102011'
when convert(date,Arrival_Date) between convert(date,'01/04/2011') and convert(date,'31/03/2012') then '20112012'
when convert(date,Arrival_Date) between convert(date,'01/04/2012') and convert(date,'31/03/2013') then '20122013'
when convert(date,Arrival_Date) between convert(date,'01/04/2013') and convert(date,'31/03/2014') then '20132014'
else 'NULL' end as 'ContractFinancialYear'
from dbo.AE_SUSArrivalDatehttp://www.rad.pasfu.com
Free Windows Admin Tool Kit Click here and download it now
July 4th, 2011 7:31am