----- Forwarded by Ben Carlyle/AU/IRSA/Rail on 06/01/2004 08:34 AM -----
Ben Carlyle
06/01/2004 08:31 AM
To: "Allan Edwards" <[EMAIL PROTECTED]>@CORP
cc:
Subject: RE: [sqlite] Documentation
Hello,
"Allan Edwards" <[EMAIL PROTECTED]>
06/01/2004 12:18 AM
To: "'Roger Reghin'" <[EMAIL PROTECTED]>, "'Ralph Wetzel'"
<[EMAIL PROTECTED]>
cc: <[EMAIL PROTECTED]>
Subject: RE: [sqlite] Documentation
> CREATE TABLE Allan (DateTimeField DateTime);
> INSERT INTO Allan (DateTimeField) VALUES ('2004-01-04 12:00:00');
> SELECT DateTimeField FROM Allan WHERE datetime(DateTimeField) =
> datetime('2004-01-04 12:00:00');
> SELECT DateTimeField FROM Allan WHERE datetime(DateTimeField) >
> datetime('2004-01-03 12:00:00');
> SELECT DateTimeField FROM Allan WHERE datetime(DateTimeField) <
> datetime('2004-01-03 12:00:00');
Part of the appeal of this particular time and date format is that for
normal equality and comparison tests like the ones you've done you don't
need to call any datetime funcations. String comparison is fine (at least
until the year 10000 needs to be represented) because the digits are
always in exactly the same places in the string (which is why it's
important to still include the leading 0 chars):
SELECT DateTimeField FROM Allan WHERE DateTimeField = '2004-01-04
12:00:00';
SELECT DateTimeField FROM Allan WHERE DateTimeField > '2004-01-03
12:00:00';
SELECT DateTimeField FROM Allan WHERE DateTimeField < '2004-01-03
12:00:00';
By dropping the transformation you permit the current version of sqlite to
use any relevant index to do these selections.
I don't know the ANSI standard to which you referred, but XSD defines the
datetime with a few extra tweaks: A T between the date and time, optional
sub-second resolution, and an optional time-zone:
'2004-01-04T12:00:00+10:00'.
Benjamin.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]