I got a numeric(8,0) date column, with values like 20130101
. I need to cast it to some date format and do some queries.
My test query looks like this
SELECT *
FROM hund
WHERE ISDATE(hund.hfdat) = 1
and cast((left(convert(varchar(8),hund.hfdat),4) +
substring(convert(varchar(8),hund.hfdat),5,2) + right(hund.hfdat,2))
as datetime) between '20050101' and '20300101'
I get this error
Conversion failed when converting date and/or time from character string.
I guess my 'date' column get some bad data. Some suggestion to write it in some other way?
I want to jack this into this, dogs not older than 10 years
SELECT Ras_.rasnamn as 'Ras', count(distinct person.personid) as 'Antal
ägare', count(distinct JBV_Aegare.hundid) as 'Antal djur'
FROM JBV_Aegare
INNER JOIN hund ON JBV_Aegare.hundID=hund.hundID
INNER JOIN ras_ ON hund.ras=ras_.raskod
INNER JOIN person ON JBV_Aegare.personID=person.personid
INNER JOIN PostnummerLan ON person.postnr=PostnummerLan.PN_Postnummer
INNER JOIN land ON PostnummerLan.PN_Lan=land.landkod
where postnr <> 0 and person.landkod=0 and HERE ->>> hund.hfdat >=
convert(CHAR(8),DATEADD(YEAR, -1, GETDATE()),112) and
hund.hfdat <= (year(getdate()) + 10)
group by Ras_.rasnamn
order by Ras_.rasnamn