> 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: [email protected]
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: [email protected]
> 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: [email protected]
>>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: [email protected]
>>>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: [email protected]
>>>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: [email protected]
>>>>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]
-----------------------------------------------------------------------------