Except that long dates stored in the database are completely useless
for doing and understanding the results of SQL querries.

On Jan 29, 7:36 am, Nerdrow <[email protected]> wrote:
> All date/time in java is epoch based anyway, so I would just store it
> as a long until you need to display it then use a Date object to
> format the output, small & fast :)
>
> On Jan 27, 11:20 pm, Zsolt Vasvari <[email protected]> wrote:
>
>
>
> > Sorry, I take that back....
>
> > I define my columns as DATETIME and then use the following static
> > class (feel free to use it as you wish) to convert 'long' values to
> > DateStamp format.  SQLite can sort on that format.
>
> > import java.util.Calendar;
> > import android.database.Cursor;
>
> > // This is a replacement for java.sql.Timestamp which is way too slow
> > final class Timestamp
> > {
> >     static Calendar calendar;
>
> >     static
> >     {
> >         calendar = Calendar.getInstance();
> >     }
>
> >     // Can't instantiate this class
> >     private Timestamp()
> >     {
> >         // Nothing to do
> >     }
>
> >     static CharSequence formatCurrentTimestamp()
> >     {
> >         return formatTimestamp(System.currentTimeMillis());
> >     }
>
> >     static CharSequence formatTimestamp(long time)
> >     {
> >         calendar.setTimeInMillis(time);
>
> >         int year = calendar.get(Calendar.YEAR);
> >         int month = calendar.get(Calendar.MONTH) + 1;
> >         int day = calendar.get(Calendar.DAY_OF_MONTH);
> >         int hour = calendar.get(Calendar.HOUR_OF_DAY);
> >         int minute = calendar.get(Calendar.MINUTE);
> >         int second = calendar.get(Calendar.SECOND);
> >         int millisecond = calendar.get(Calendar.MILLISECOND);
>
> >         // 01234567890123456789012
> >         // YYYY-MM-DD HH:MM:SS:MMM
> >         StringBuilder s = new StringBuilder(23);
> >         s.append(year);
> >         s.append('-');
> >         if (month < 10)
> >             s.append('0');
> >         s.append(month);
> >         s.append('-');
> >         if (day < 10)
> >             s.append('0');
> >         s.append(day);
> >         s.append(' ');
> >         if (hour < 10)
> >             s.append('0');
> >         s.append(hour);
> >         s.append(':');
> >         if (minute < 10)
> >             s.append('0');
> >         s.append(minute);
> >         s.append(':');
> >         if (second < 10)
> >             s.append('0');
> >         s.append(second);
> >         s.append('.');
> >         if (millisecond < 100)
> >             s.append('0');
> >         if (millisecond < 10)
> >             s.append('0');
> >         s.append(millisecond);
>
> >         return s;
> >     }
>
> >     static long parseTimestampOrZeroFromCursor(Cursor cursor, int
> > columnId)
> >     {
> >         long time;
> >         CharSequence s = cursor.getString(columnId);
>
> >         if ((s.length() == 1) && (s.charAt(0) == '0'))
> >             time = 0;
> >         else
> >             time = parseTimestampFromCursorCommon(s);
>
> >         return time;
> >     }
>
> >     static long parseTimestampFromCursor(Cursor cursor, int columnId)
> >     {
> >         return parseTimestampFromCursorCommon(cursor.getString
> > (columnId));
> >     }
>
> >     static private long parseTimestampFromCursorCommon(CharSequence s)
> >     {
> >         // 01234567890123456789012
> >         // YYYY-MM-DD HH:MM:SS:MMM
> >         int year = ((s.charAt(0) - '0') * 1000) + ((s.charAt(1) - '0')
> > * 100) + ((s.charAt(2) - '0') * 10) + (s.charAt(3) - '0');
> >         int month = ((s.charAt(5) - '0') * 10) + (s.charAt(6) - '0');
> >         int day = ((s.charAt(8) - '0') * 10) + (s.charAt(9) - '0');
> >         int hour = ((s.charAt(11) - '0') * 10) + (s.charAt(12) - '0');
> >         int minute = ((s.charAt(14) - '0') * 10) + (s.charAt(15) -
> > '0');
> >         int second = ((s.charAt(17) - '0') * 10) + (s.charAt(18) -
> > '0');
> >         int millisecond = ((s.charAt(20) - '0') * 100) + ((s.charAt
> > (21) - '0') * 10) + (s.charAt(22) - '0');
>
> >         calendar.set(Calendar.YEAR, year);
> >         calendar.set(Calendar.MONTH, month - 1);
> >         calendar.set(Calendar.DAY_OF_MONTH, day);
> >         calendar.set(Calendar.HOUR_OF_DAY, hour);
> >         calendar.set(Calendar.MINUTE, minute);
> >         calendar.set(Calendar.SECOND, second);
> >         calendar.set(Calendar.MILLISECOND, millisecond);
>
> >         return calendar.getTimeInMillis();
> >     }
>
> > }
>
> > On Jan 28, 3:16 pm, Zsolt Vasvari <[email protected]> wrote:
>
> > > I just store a "long", as returned from getTime()
>
> > > On Jan 28, 1:10 pm, Frank Weiss <[email protected]> wrote:
>
> > > > Another option for not-too-large databases is ISO-8601, like
> > > > 20100127T134900Z, or just 20100127, etc. It's designed to sort and 
> > > > compare
> > > > as simple strings. Downside is it takes more space in the database.- 
> > > > Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to