T&B
2007-11-02 06:29:23 UTC
Hi all,
How can I convert dates from the format d/m/yy to SQL style YYY-MM-DD?
I have some imported data that includes a date column in the format d/
m/yy, where:
d = day as 1 or two digits
m = month as 1 or two digits
yy = year as two digits
eg:
2/11/07 = today
2/8/68 = 2nd of August, 1968
How can I convert this in SQLite to YYYY-MM-DD?
The data is from a bank, so I have no control over its production.
I couldn't find any suitable built in SQLite functions, which all seem
to operate in the other direction.
The best I've come up with so far is:
create table Raw( Date );
insert into Raw( Date ) values ( '2/11/07' );
insert into Raw( Date ) values ( '2/8/68' );
select
case /* Prefix for year = 20 if year starts 0, 1 or 2, else 19 */
when cast( substr( Date, -2, 1 ) as integer ) < 3
then '20'
else '19'
end
|| substr( Date, -2, 2 ) /* Year = last two characters */
|| '-' ||
case /* Prefix month with 0 if short */
when substr( Date, -5, 1 ) = '/'
then '0'
else ''
end
||
case /* Month = from after / to 4th last character */
when substr( Date, 2, 1) = '/'
then substr( Date, 3, length( Date ) - 5 )
else substr( Date, 4, length( Date ) - 6 )
end
|| '-' ||
case /* Day = from 1st to character before first / */
when substr( Date, 2, 1 ) = '/'
then '0' || substr( Date, 1, 1 ) /* Prefix with 0 if short */
else substr( Date, 1, 2 )
end
as Date
from Raw
;
which correctly gives:
2007-11-02
1968-08-02
But is there a more robust, built in method?
Thanks,
Tom
-----------------------------------------------------------------------------
To unsubscribe, send email to sqlite-users-unsubscribe-CzDROfG0BjIdnm+***@public.gmane.org
-----------------------------------------------------------------------------
How can I convert dates from the format d/m/yy to SQL style YYY-MM-DD?
I have some imported data that includes a date column in the format d/
m/yy, where:
d = day as 1 or two digits
m = month as 1 or two digits
yy = year as two digits
eg:
2/11/07 = today
2/8/68 = 2nd of August, 1968
How can I convert this in SQLite to YYYY-MM-DD?
The data is from a bank, so I have no control over its production.
I couldn't find any suitable built in SQLite functions, which all seem
to operate in the other direction.
The best I've come up with so far is:
create table Raw( Date );
insert into Raw( Date ) values ( '2/11/07' );
insert into Raw( Date ) values ( '2/8/68' );
select
case /* Prefix for year = 20 if year starts 0, 1 or 2, else 19 */
when cast( substr( Date, -2, 1 ) as integer ) < 3
then '20'
else '19'
end
|| substr( Date, -2, 2 ) /* Year = last two characters */
|| '-' ||
case /* Prefix month with 0 if short */
when substr( Date, -5, 1 ) = '/'
then '0'
else ''
end
||
case /* Month = from after / to 4th last character */
when substr( Date, 2, 1) = '/'
then substr( Date, 3, length( Date ) - 5 )
else substr( Date, 4, length( Date ) - 6 )
end
|| '-' ||
case /* Day = from 1st to character before first / */
when substr( Date, 2, 1 ) = '/'
then '0' || substr( Date, 1, 1 ) /* Prefix with 0 if short */
else substr( Date, 1, 2 )
end
as Date
from Raw
;
which correctly gives:
2007-11-02
1968-08-02
But is there a more robust, built in method?
Thanks,
Tom
-----------------------------------------------------------------------------
To unsubscribe, send email to sqlite-users-unsubscribe-CzDROfG0BjIdnm+***@public.gmane.org
-----------------------------------------------------------------------------