> It looks like Interbase uses a traditional date format based on an epoch.
It just does year * 10000 + month * 100 + day I suppose I could something like this in SQL: ((lIBDate - ((lIBDate \ 10000) * 10000 + ((lIBDate - (lIBDate \ 10000) * 10000) \ 100) * 100)) + _ (153 * (((lIBDate - (lIBDate \ 10000) * 10000) \ 100) + _ 12 * ((14 - ((lIBDate - (lIBDate \ 10000) * 10000) \ 100)) / 12) - 3) + 2) / 5 + _ ((lIBDate \ 10000) + 4800 - ((14 - ((lIBDate - (lIBDate \ 10000) * 10000) \ 100)) / 12)) * _ 365 + ((lIBDate \ 10000) + 4800 - _ ((14 - ((lIBDate - (lIBDate \ 10000) * 10000) \ 100)) / 12)) / 4 - 32083) - _ 2415033 Except it looks a mess and it is one day out, I take it due to not declaring variables as long as in my previously posted function. RBS -----Original Message----- From: John Stanton [mailto:[EMAIL PROTECTED] Sent: 03 December 2006 20:03 To: sqlite-users@sqlite.org Subject: Re: [sqlite] Dealing with dates in the format yyyymmdd It looks like Interbase uses a traditional date format based on an epoch. That is a system where a base date is set (the epoch) and the date is stored as an offset from that date. It is stored as an integer. Sqlite uses a similar system, except that it uses a special epoch compatible with other calendars and incorporates the time, storing all of it in a 64 bit floating point format. You should be able to translate the date into a yymmdd format of some description from Interbase and use that to insert into Sqlite. The ISO 8601 date and time format is a widely used standard. RB Smissaert wrote: >>What do you mean by "integer format yyymmdd"? > > > This is an Interbase database and the Create statement of such a field would > be like this: > > CREATE TABLE ENTRY(ADDED_DATE INTEGER, etc. > > Not sure what an epoch is, not sure how else to describe it. > > So, do you reckon I could, given the fact that I have an integer number in > SQLite like 20061203, convert this in SQLite to another integer number that > would give the number of days since 31 December 1899? Or do you think that I > could make accurate dates comparisons in SQLite with 20061203 etc.? I > suppose the trouble will be with weeks and days, years and months would be > fine. So, for example it won't be that simple to say if 20061203 is more > than 10 weeks past 20060920, whereas it will be easy to calculate that it is > less than 3 months passed that date. > Is there such a thing as the VB/VBA DateSerial in SQLite? This means given > the year, the month number and day number you can make a date? > > RBS > > -----Original Message----- > From: John Stanton [mailto:[EMAIL PROTECTED] > Sent: 03 December 2006 18:23 > To: sqlite-users@sqlite.org > Subject: Re: [sqlite] Dealing with dates in the format yyyymmdd > > What do you mean by "integer format yyymmdd"? Is it an integer based on > an epoch or is it a number like 20061203 stored in a 32 bit word? > > We use Sqlite format dates and times and thereby get good SQL capability > and have a small library of date function which interface into Unix and > Windows date and time retrieval APIs. A couple of simple Sqlite custom > functions to do some date manipulation made the SQL simpler. > > Custom date functions are very easy to implement using Sqlite because > you can use the Sqlite date routines and style as a basis. > > The Sqlite epoch based date format is elegant because it permits you to > present date and time not only according to any time zone but to comply > with more than just the Gregorian calendar - with Middle Eastern and > Oriental ones should the need arise. > > RB Smissaert wrote: > >>Trouble is I need to import dates from Interbase that have the integer >>format yyyymmdd. How would I convert that (at import) to the SQLite date >>format? I do the import via an ADO recordset and then move the data via >>SQLite inserts. >> >>RBS >> >>-----Original Message----- >>From: John Stanton [mailto:[EMAIL PROTECTED] >>Sent: 03 December 2006 17:01 >>To: sqlite-users@sqlite.org >>Subject: Re: [sqlite] Dealing with dates in the format yyyymmdd >> >>Why not use the internal Sqlite date format. Then date processing is >>straight forward and you can use the conversion routines to present it >>in the various national and ISO formats. >> >>Sqlite uses a very correct date storage format based on an epoch way >>back in antiquity so that you can present it in any national format. >> >>Using the internal format date comparison is just a numeric compare, >>which is efficient. >> >>If you need any special date presentation you can add a custome function >>to Sqlite to achieve it from your SQL statement. >> >>RB Smissaert wrote: >> >> >>>Just thought of one reason why it I need something else in SQLite than >>>yyyymmdd in the date field and that is because I need date comparisons >>>between different tables. So, I need to do: is fieldA + x days > fieldB? >>>etc. >>>This will be difficult with the yyyymmdd format. I could of course update >>>all the date fields in a VBA loop, but that might be a bit slow. So, if >>>anybody has an idea how to convert integer yyyymmdd to the Excel date >> >>format >> >> >>>in SQLite I would be interested. >>> >>>RBS >>> >>>-----Original Message----- >>>From: RB Smissaert [mailto:[EMAIL PROTECTED] >>>Sent: 03 December 2006 15:37 >>>To: sqlite-users@sqlite.org >>>Subject: RE: [sqlite] Dealing with dates in the format yyyymmdd >>> >>>I think it is easier to do this in VBA and as the main work is done in a >> >>VBA >> >> >>>array it is quite fast as well. Not as elegant maybe as doing it in >> >>SQLite, >> >> >>>but it will do. >>> >>>RBS >>> >>>-----Original Message----- >>>From: Fred Williams [mailto:[EMAIL PROTECTED] >>>Sent: 03 December 2006 14:41 >>>To: sqlite-users@sqlite.org >>>Subject: RE: [sqlite] Dealing with dates in the format yyyymmdd >>> >>>Is there a reason you can use Excel's "Format Cells" to accomplish what >>>you wish? Enter a "Custom" format of "yyyy\mm\dd" in a cell and enter >>>"=today()" as a value in that cell. Have not fooled with Excel much >>>lately, but I think you can even format a spreadsheet programmatically. >>> >>>Fred >>> >>> >>> >>> >>>>-----Original Message----- >>>>From: RB Smissaert [mailto:[EMAIL PROTECTED] >>>>Sent: Sunday, December 03, 2006 8:21 AM >>>>To: sqlite-users@sqlite.org >>>>Subject: [sqlite] Dealing with dates in the format yyyymmdd >>>> >>>> >>>>When moving data from Interbase to SQLite I have to convert >>>>integer dates in >>>>the format yyyymmdd to Excel dates. These are integer numbers >>>>counting the >>>>days past 31 December 1899. With substr I can make it >>>>dd/mm/yyyy (I am in >>>>the UK and that is the normal way to format dates) but the >>>>problem is it >>>>will be displayed in Excel like mm/dd/yyyy if that would be a >>>>possible date. >>>>This is due to the US date format of Excel. >>>>So, would it be possible in SQLite to make a date format like this: >>>>dd/mmm/yyyy so that would be 03/dec/2006 >>>>This would prevent Excel from putting the month first. >>>>or alternatively make it the Excel integer date format so the >>>>above date >>>>would be: 39054 >>>> >>>>I could handle the date formatting in VBA, but I would like >>>>to do as much as >>>>possible in SQLite as it will be faster and it would keep the >>>>code neater. >>>>Thanks for any advice. >>>> >>>>RBS >>>> >>>> >>>> >>>> >>>>-------------------------------------------------------------- >>>>--------------- >>>>To unsubscribe, send email to [EMAIL PROTECTED] >>>>-------------------------------------------------------------- >>>>--------------- >>>> >>> >>> >>> >>> > ---------------------------------------------------------------------------- > >>>- >>>To unsubscribe, send email to [EMAIL PROTECTED] >>> >> >> > ---------------------------------------------------------------------------- > >>>- >>> >>> >>> >>> >>> >> >> > ---------------------------------------------------------------------------- > >>>- >>>To unsubscribe, send email to [EMAIL PROTECTED] >>> >> >> > ---------------------------------------------------------------------------- > >>>- >>> >>> >>> >>> >>> >> >> > ---------------------------------------------------------------------------- > >>- >> >> >>>To unsubscribe, send email to [EMAIL PROTECTED] >>> >> >> > ---------------------------------------------------------------------------- > >>- >> >> >> >> > > ---------------------------------------------------------------------------- > >>- >>To unsubscribe, send email to [EMAIL PROTECTED] >> > > ---------------------------------------------------------------------------- > >>- >> >> >> >> >> > > ---------------------------------------------------------------------------- > - > >>To unsubscribe, send email to [EMAIL PROTECTED] >> > > ---------------------------------------------------------------------------- > - > > > > ---------------------------------------------------------------------------- > - > To unsubscribe, send email to [EMAIL PROTECTED] > ---------------------------------------------------------------------------- > - > > > > > ---------------------------------------------------------------------------- - > To unsubscribe, send email to [EMAIL PROTECTED] > ---------------------------------------------------------------------------- - > ---------------------------------------------------------------------------- - To unsubscribe, send email to [EMAIL PROTECTED] ---------------------------------------------------------------------------- - ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------