~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/temporal.cc

  • Committer: Brian Aker
  • Date: 2011-01-08 10:35:13 UTC
  • mfrom: (2057.2.9 timestamp)
  • Revision ID: brian@tangent.org-20110108103513-3wuo8tsyajjcxjrg
Merge in fractional seconds to timestamp.

Show diffs side-by-side

added added

removed removed

Lines of Context:
153
153
  TemporalFormat *current_format;
154
154
  std::vector<TemporalFormat *>::iterator current= known_date_formats.begin();
155
155
 
 
156
  _useconds= 0; // We may not match on it, so we need to make sure we zero it out.
156
157
  while (current != known_date_formats.end())
157
158
  {
158
159
    current_format= *current;
1069
1070
int MicroTimestamp::to_string(char *to, size_t to_len) const
1070
1071
{
1071
1072
  return snprintf(to, to_len,
1072
 
                  "%04" PRIu32 "-%02" PRIu32 "-%02" PRIu32
1073
 
                      " %02" PRIu32 ":%02" PRIu32 ":%02" PRIu32 ".%06" PRIu32,
1074
 
                  _years, _months, _days,
1075
 
                  _hours, _minutes, _seconds, _useconds);
 
1073
                  "%04" PRIu32 "-%02" PRIu32 "-%02" PRIu32
 
1074
                  " %02" PRIu32 ":%02" PRIu32 ":%02" PRIu32 ".%06" PRIu32,
 
1075
                  _years, _months, _days,
 
1076
                  _hours, _minutes, _seconds, _useconds);
1076
1077
}
1077
1078
 
1078
1079
void Time::to_decimal(type::Decimal *to) const
1332
1333
    return false;
1333
1334
}
1334
1335
 
 
1336
bool DateTime::from_timeval(struct timeval &timeval_arg)
 
1337
{
 
1338
  struct tm broken_time;
 
1339
  struct tm *result;
 
1340
 
 
1341
  result= gmtime_r(&timeval_arg.tv_sec, &broken_time);
 
1342
  if (result != NULL)
 
1343
  {
 
1344
    _years= 1900 + broken_time.tm_year;
 
1345
    _months= 1 + broken_time.tm_mon; /* Month is NOT ordinal for struct tm! */
 
1346
    _days= broken_time.tm_mday; /* Day IS ordinal for struct tm */
 
1347
    _hours= broken_time.tm_hour;
 
1348
    _minutes= broken_time.tm_min;
 
1349
    _seconds= broken_time.tm_sec;
 
1350
    _epoch_seconds= timeval_arg.tv_sec;
 
1351
    /* Set hires precision to zero */
 
1352
    _useconds= timeval_arg.tv_usec;
 
1353
    _nseconds= 0;
 
1354
    return is_valid();
 
1355
  }
 
1356
  else 
 
1357
  {
 
1358
    return false;
 
1359
  }
 
1360
}
 
1361
 
1335
1362
bool DateTime::from_time_t(const time_t from)
1336
1363
{
1337
1364
  struct tm broken_time;
1353
1380
    return is_valid();
1354
1381
  }
1355
1382
  else 
 
1383
  {
1356
1384
    return false;
 
1385
  }
1357
1386
}
1358
1387
 
1359
1388
void Date::to_time_t(time_t &to) const
1373
1402
  to= _epoch_seconds;
1374
1403
}
1375
1404
 
1376
 
void MicroTimestamp::to_timeval(struct timeval *to) const
 
1405
void MicroTimestamp::to_timeval(struct timeval &to) const
1377
1406
{
1378
 
  to->tv_sec= _epoch_seconds;
1379
 
  to->tv_usec= _useconds;
 
1407
  to.tv_sec= _epoch_seconds;
 
1408
  to.tv_usec= _useconds;
1380
1409
}
1381
1410
 
1382
1411
void NanoTimestamp::to_timespec(struct timespec *to) const