#include <temporal.h>
Public Member Functions | |
bool | operator== (const Date &rhs) |
bool | operator!= (const Date &rhs) |
bool | operator> (const Date &rhs) |
bool | operator>= (const Date &rhs) |
bool | operator< (const Date &rhs) |
bool | operator<= (const Date &rhs) |
bool | operator== (const DateTime &rhs) |
bool | operator!= (const DateTime &rhs) |
bool | operator> (const DateTime &rhs) |
bool | operator>= (const DateTime &rhs) |
bool | operator< (const DateTime &rhs) |
bool | operator<= (const DateTime &rhs) |
bool | operator== (const Timestamp &rhs) |
bool | operator!= (const Timestamp &rhs) |
bool | operator> (const Timestamp &rhs) |
bool | operator>= (const Timestamp &rhs) |
bool | operator< (const Timestamp &rhs) |
bool | operator<= (const Timestamp &rhs) |
bool | is_valid_timestamp () const |
virtual bool | is_valid () const |
void | to_time_t (time_t &to) const |
bool | in_unix_epoch () const |
void | to_int32_t (int32_t *) const |
bool | from_int32_t (int32_t) |
virtual int | to_string (char *to, size_t to_len) const |
bool | from_string (const char *from, size_t from_len) |
void | to_int64_t (int64_t *to) const |
bool | from_time_t (const time_t from) |
bool | from_timeval (struct timeval &_timeval) |
bool | from_int64_t (const int64_t from, bool convert) |
bool | from_int64_t (const int64_t from) |
void | to_tm (struct tm *to) const |
void | to_decimal (type::Decimal *to) const |
const Date | operator- (const Date &rhs) |
const Date | operator- (const Time &rhs) |
const Date | operator- (const DateTime &rhs) |
const Date | operator+ (const Date &rhs) |
const Date | operator+ (const Time &rhs) |
const Date | operator+ (const DateTime &rhs) |
Date & | operator+= (const Date &rhs) |
Date & | operator+= (const Time &rhs) |
Date & | operator+= (const DateTime &rhs) |
Date & | operator-= (const Date &rhs) |
Date & | operator-= (const Time &rhs) |
Date & | operator-= (const DateTime &rhs) |
virtual bool | is_valid_date () const |
virtual bool | is_valid_datetime () const |
virtual bool | is_valid_time () const |
void | to_julian_day_number (int64_t *to) const |
bool | from_julian_day_number (const int64_t from) |
virtual bool | from_tm (const struct tm *from) |
enum calendar | calendar () const |
void | set_nseconds (const uint32_t nsecond) |
uint32_t | nseconds () const |
void | set_useconds (const uint32_t usecond) |
uint32_t | useconds () const |
void | set_epoch_seconds () |
void | set_epoch_seconds (const uint32_t epoch_second) |
time_t | epoch_seconds () const |
void | set_seconds (const uint32_t second) |
uint32_t | seconds () const |
void | set_minutes (const uint32_t minute) |
uint32_t | minutes () const |
void | set_hours (const uint32_t hour) |
uint32_t | hours () const |
void | set_days (const uint32_t day) |
uint32_t | days () const |
void | set_months (const uint32_t month) |
uint32_t | months () const |
void | set_years (const uint32_t year) |
uint32_t | years () const |
bool | overflow () const |
Static Public Attributes | |
static const int | MAX_STRING_LENGTH = 27 |
Protected Member Functions | |
uint64_t | _cumulative_seconds_in_time () const |
void | _reset () |
Protected Attributes | |
enum calendar | _calendar |
uint32_t | _years |
uint32_t | _months |
uint32_t | _days |
uint32_t | _hours |
uint32_t | _minutes |
uint32_t | _seconds |
time_t | _epoch_seconds |
uint32_t | _useconds |
uint32_t | _nseconds |
bool | _overflow |
Friends | |
class | TemporalInterval |
class | Timestamp |
class | TemporalFormat |
Class representing temporal components in the UNIX epoch
Definition at line 701 of file temporal.h.
uint64_t drizzled::Temporal::_cumulative_seconds_in_time | ( | ) | const [protected, inherited] |
Returns number of seconds in time components (hour + minute + second)
Definition at line 79 of file temporal.cc.
Referenced by drizzled::Date::operator+(), drizzled::Time::operator+(), drizzled::Date::operator+=(), drizzled::Time::operator+=(), drizzled::Date::operator-(), drizzled::Time::operator-(), drizzled::Date::operator-=(), and drizzled::Time::operator-=().
void drizzled::Temporal::_reset | ( | ) | [inline, protected, inherited] |
Resets all temporal components to zero
Definition at line 110 of file temporal.h.
enum calendar drizzled::Temporal::calendar | ( | ) | const [inline, inherited] |
Returns the calendar component.
Definition at line 121 of file temporal.h.
uint32_t drizzled::Temporal::days | ( | ) | const [inline, inherited] |
Returns the days component.
Definition at line 155 of file temporal.h.
Referenced by drizzled::Item_func_curdate_utc::store_now_in_TIME(), drizzled::Item_func_curdate_local::store_now_in_TIME(), drizzled::Item_func_weekday::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_dayofyear::val_int(), drizzled::Item_func_dayofmonth::val_int(), and drizzled::Item_func_year::val_int_endpoint().
time_t drizzled::Temporal::epoch_seconds | ( | ) | const [inline, inherited] |
Returns the UNIX epoch seconds component.
Definition at line 139 of file temporal.h.
bool drizzled::DateTime::from_int32_t | ( | int32_t | from | ) | [inline, virtual, inherited] |
Attempts to populate the Date instance based on the contents of a supplied 4-byte integer.
Returns whether the conversion was successful.
Integer | to convert from |
Ignore overflow and pass-through to DateTime::from_int64_t()
Reimplemented from drizzled::Date.
Definition at line 607 of file temporal.h.
bool drizzled::DateTime::from_int64_t | ( | const int64_t | from, |
bool | convert | ||
) | [inherited] |
Attempts to populate the DateTime instance based on the contents of a supplied 8-byte integer.
Returns whether the conversion was successful.
Integer | to convert from |
convert | if conversion to canonical representation should be attempted |
We try to intepret the incoming number as a datetime "string". This is pretty much a hack for usability, but keeps us compatible with MySQL.
Definition at line 1210 of file temporal.cc.
References drizzled::DateTime::is_valid(), and drizzled::Temporal::set_epoch_seconds().
Referenced by drizzled::Item_func_last_day::get_temporal(), drizzled::field::Microtime::store(), drizzled::field::Epoch::store(), drizzled::Item_func_year::val_int(), drizzled::Item_func_weekday::val_int(), drizzled::Item_func_to_days::val_int(), drizzled::Item_func_second::val_int(), drizzled::Item_func_quarter::val_int(), drizzled::Item_func_month::val_int(), drizzled::Item_func_minute::val_int(), drizzled::Item_func_microsecond::val_int(), drizzled::Item_func_hour::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_dayofyear::val_int(), drizzled::Item_func_dayofmonth::val_int(), drizzled::Item_func_year::val_int_endpoint(), and drizzled::Item_func_to_days::val_int_endpoint().
bool drizzled::Date::from_julian_day_number | ( | const int64_t | from | ) | [inherited] |
Attempts to populate the Date instance based on the contents of a supplied Julian Day Number
Returns whether the conversion was successful.
Integer | to convert from |
Definition at line 1173 of file temporal.cc.
References drizzled::gregorian_date_from_julian_day_number(), and drizzled::Date::is_valid().
bool drizzled::DateTime::from_string | ( | const char * | from, |
size_t | from_len | ||
) | [virtual, inherited] |
Attempts to populate the DateTime instance based on the contents of a supplied string.
Returns whether the conversion was successful.
String | to convert from |
Length | of supplied string |
Reimplemented from drizzled::Date.
Definition at line 177 of file temporal.cc.
References drizzled::DateTime::is_valid(), drizzled::TemporalFormat::matches(), and drizzled::Temporal::set_epoch_seconds().
Referenced by drizzled::Item_func_last_day::get_temporal(), drizzled::Item_func_year::val_int(), drizzled::Item_func_weekday::val_int(), drizzled::Item_func_to_days::val_int(), drizzled::Item_func_second::val_int(), drizzled::Item_func_quarter::val_int(), drizzled::Item_func_month::val_int(), drizzled::Item_func_minute::val_int(), drizzled::Item_func_microsecond::val_int(), drizzled::Item_func_hour::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_dayofyear::val_int(), drizzled::Item_func_dayofmonth::val_int(), and drizzled::Item_func_to_days::val_int_endpoint().
bool drizzled::DateTime::from_time_t | ( | const time_t | from | ) | [virtual, inherited] |
Attempts to populate the DateTime instance based on the contents of a supplied time_t
Returns whether the conversion was successful.
time_t | to convert from |
Reimplemented from drizzled::Date.
Definition at line 1364 of file temporal.cc.
References drizzled::DateTime::is_valid().
bool drizzled::Date::from_tm | ( | const struct tm * | from | ) | [virtual, inherited] |
Attempts to populate the Date instance based on the contents of a supplied pointer to struct tm (broken time).
Returns whether the conversion was successful.
Pointe | rto the struct tm to convert from |
Definition at line 1270 of file temporal.cc.
References drizzled::Date::is_valid(), and drizzled::Temporal::set_epoch_seconds().
uint32_t drizzled::Temporal::hours | ( | ) | const [inline, inherited] |
Returns the hours component.
Definition at line 151 of file temporal.h.
Referenced by drizzled::Item_func_hour::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_year::val_int_endpoint(), and drizzled::Item_func_to_days::val_int_endpoint().
bool drizzled::DateTime::in_unix_epoch | ( | ) | const [virtual, inherited] |
Returns whether the DateTime (or subclass) instance is in the Unix Epoch.
Reimplemented from drizzled::Date.
Definition at line 1265 of file temporal.cc.
References drizzled::in_unix_epoch_range().
bool drizzled::Timestamp::is_valid | ( | ) | const [virtual] |
Returns whether the temporal value is valid timestamp.
Reimplemented from drizzled::DateTime.
Reimplemented in drizzled::MicroTimestamp, and drizzled::NanoTimestamp.
Definition at line 1459 of file temporal.cc.
References drizzled::in_unix_epoch_range().
Referenced by is_valid_timestamp(), and drizzled::Item_func_unix_timestamp::val_int().
virtual bool drizzled::Date::is_valid_date | ( | ) | const [inline, virtual, inherited] |
Returns whether the temporal value is valid as a date.
Implements drizzled::Temporal.
Definition at line 298 of file temporal.h.
References drizzled::Date::is_valid().
virtual bool drizzled::Date::is_valid_datetime | ( | ) | const [inline, virtual, inherited] |
Returns whether the temporal value is valid as a datetime.
Implements drizzled::Temporal.
Definition at line 299 of file temporal.h.
References drizzled::Date::is_valid().
virtual bool drizzled::Date::is_valid_time | ( | ) | const [inline, virtual, inherited] |
Returns whether the temporal value is valid as a time.
Implements drizzled::Temporal.
Definition at line 300 of file temporal.h.
bool drizzled::Timestamp::is_valid_timestamp | ( | ) | const [inline, virtual] |
Returns whether the temporal value is valid as a UNIX timestamp.
Reimplemented from drizzled::Date.
Definition at line 745 of file temporal.h.
References is_valid().
uint32_t drizzled::Temporal::minutes | ( | ) | const [inline, inherited] |
Returns the minutes component.
Definition at line 147 of file temporal.h.
Referenced by drizzled::Item_func_minute::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_year::val_int_endpoint(), and drizzled::Item_func_to_days::val_int_endpoint().
uint32_t drizzled::Temporal::months | ( | ) | const [inline, inherited] |
Returns the months component.
Definition at line 159 of file temporal.h.
Referenced by drizzled::Item_func_last_day::get_temporal(), drizzled::Item_func_curdate_utc::store_now_in_TIME(), drizzled::Item_func_curdate_local::store_now_in_TIME(), drizzled::Item_func_weekday::val_int(), drizzled::Item_func_quarter::val_int(), drizzled::Item_func_month::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_dayofyear::val_int(), and drizzled::Item_func_year::val_int_endpoint().
uint32_t drizzled::Temporal::nseconds | ( | ) | const [inline, inherited] |
Returns the nanoseconds component.
Definition at line 125 of file temporal.h.
Referenced by drizzled::Item_func_to_days::val_int_endpoint().
Need an exception check here for bounds of JDN...
Definition at line 598 of file temporal.cc.
References drizzled::gregorian_date_from_julian_day_number(), and drizzled::julian_day_number_from_gregorian_date().
Need an exception check here for bounds of JDN...
Definition at line 702 of file temporal.cc.
References drizzled::Temporal::_cumulative_seconds_in_time(), drizzled::gregorian_date_from_julian_day_number(), and drizzled::julian_day_number_from_gregorian_date().
Need an exception check here for bounds of JDN...
Definition at line 626 of file temporal.cc.
References drizzled::gregorian_date_from_julian_day_number(), and drizzled::julian_day_number_from_gregorian_date().
Once exceptions are supported, we should raise an error here if the result Time is not valid?
Definition at line 511 of file temporal.cc.
References drizzled::Temporal::_cumulative_seconds_in_time().
Need an exception check here for bounds of JDN...
Definition at line 792 of file temporal.cc.
References drizzled::Temporal::_cumulative_seconds_in_time(), drizzled::gregorian_date_from_julian_day_number(), and drizzled::julian_day_number_from_gregorian_date().
Operator overload for adding/subtracting another Date (or subclass) to/from this temporal. When subtracting or adding two Dates, we return a new Date instance.
Date | instance to add/subtract to/from |
We can add/subtract two Dates to/from each other. The result is always another Date instance.
Definition at line 586 of file temporal.cc.
References drizzled::gregorian_date_from_julian_day_number(), and drizzled::julian_day_number_from_gregorian_date().
Operator to add/subtract a Time from a Time. We can return a Time new temporal instance.
Temporal | instance to add/subtract to/from |
We can add or subtract a Time value to/from a DateTime value as well...it always produces a DateTime.
Definition at line 420 of file temporal.cc.
References drizzled::Temporal::_cumulative_seconds_in_time().
Operator overload for adding/subtracting a DateTime (or subclass) to/from this temporal. When subtracting or adding two Dates, we return a new Date instance.
DateTime | instance to add/subtract to/from |
We can add/subtract two DateTimes to/from each other. The result is always another DateTime instance.
Definition at line 658 of file temporal.cc.
References drizzled::Temporal::_cumulative_seconds_in_time(), drizzled::gregorian_date_from_julian_day_number(), and drizzled::julian_day_number_from_gregorian_date().
Once exceptions are supported, we should raise an error here if the result Time is not valid?
Definition at line 544 of file temporal.cc.
References drizzled::Temporal::_cumulative_seconds_in_time().
bool drizzled::Timestamp::operator== | ( | const Date & | rhs | ) | [virtual] |
Comparison operator overloads to compare this against a Date value.
Timestamp | to compare against. |
Reimplemented from drizzled::Date.
Definition at line 878 of file temporal.cc.
bool drizzled::Timestamp::operator== | ( | const Timestamp & | rhs | ) | [virtual] |
Comparison operator overloads to compare this against another Timestamp value.
Timestamp | to compare against. |
Reimplemented from drizzled::Date.
Definition at line 968 of file temporal.cc.
bool drizzled::Timestamp::operator== | ( | const DateTime & | rhs | ) | [virtual] |
Comparison operator overloads to compare this against a DateTime value.
DateTime | to compare against. |
Reimplemented from drizzled::Date.
Definition at line 915 of file temporal.cc.
bool drizzled::Temporal::overflow | ( | ) | const [inline, inherited] |
Returns whether the overflow flag was set (which can occur during an overloaded operator's execution)
Definition at line 166 of file temporal.h.
References drizzled::Temporal::_overflow.
uint32_t drizzled::Temporal::seconds | ( | ) | const [inline, inherited] |
Returns the seconds component.
Definition at line 143 of file temporal.h.
Referenced by drizzled::Item_func_second::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_year::val_int_endpoint(), and drizzled::Item_func_to_days::val_int_endpoint().
void drizzled::Temporal::set_days | ( | const uint32_t | day | ) | [inline, inherited] |
Sets the days component.
Definition at line 153 of file temporal.h.
Referenced by drizzled::Item_func_curdate::fix_length_and_dec(), drizzled::Item_func_last_day::get_temporal(), drizzled::Field_datetime::store_time(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::Temporal::set_epoch_seconds | ( | ) | [inherited] |
Sets the epoch_seconds component automatically, based on the temporal's components.
Definition at line 124 of file temporal.cc.
References drizzled::in_unix_epoch_range().
Referenced by drizzled::DateTime::from_int64_t(), drizzled::DateTime::from_string(), drizzled::Date::from_string(), drizzled::Date::from_tm(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::Temporal::set_epoch_seconds | ( | const uint32_t | epoch_second | ) | [inline, inherited] |
Sets the epch_seconds component manually.
Definition at line 136 of file temporal.h.
void drizzled::Temporal::set_hours | ( | const uint32_t | hour | ) | [inline, inherited] |
Sets the hours component.
Definition at line 149 of file temporal.h.
Referenced by drizzled::Field_datetime::store_time(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::Temporal::set_minutes | ( | const uint32_t | minute | ) | [inline, inherited] |
Sets the days component.
Definition at line 145 of file temporal.h.
Referenced by drizzled::Field_datetime::store_time(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::Temporal::set_months | ( | const uint32_t | month | ) | [inline, inherited] |
Sets the months component.
Definition at line 157 of file temporal.h.
Referenced by drizzled::Item_func_curdate::fix_length_and_dec(), drizzled::Field_datetime::store_time(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::Temporal::set_nseconds | ( | const uint32_t | nsecond | ) | [inline, inherited] |
Sets the nseconds component.
Definition at line 123 of file temporal.h.
void drizzled::Temporal::set_seconds | ( | const uint32_t | second | ) | [inline, inherited] |
Sets the seconds component.
Definition at line 141 of file temporal.h.
Referenced by drizzled::Field_datetime::store_time(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::Temporal::set_useconds | ( | const uint32_t | usecond | ) | [inline, inherited] |
Sets the useconds component.
Definition at line 127 of file temporal.h.
void drizzled::Temporal::set_years | ( | const uint32_t | year | ) | [inline, inherited] |
Sets the years component.
Definition at line 161 of file temporal.h.
Referenced by drizzled::Item_func_curdate::fix_length_and_dec(), drizzled::Field_datetime::store_time(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::DateTime::to_decimal | ( | type::Decimal * | to | ) | const [virtual, inherited] |
Fills a supplied type::Decimal with a representation of the DateTime value.
Pointer | to the type::Decimal to fill |
Reimplemented from drizzled::Date.
Definition at line 1098 of file temporal.cc.
void drizzled::DateTime::to_int32_t | ( | int32_t * | ) | const [inline, virtual, inherited] |
It's not possible to convert to and from a DateTime and a 4-byte integer, so let us know if we try and do it!
Reimplemented from drizzled::Date.
Definition at line 606 of file temporal.h.
void drizzled::DateTime::to_int64_t | ( | int64_t * | to | ) | const [virtual, inherited] |
Fills a supplied 8-byte integer pointer with an integer representation of the DateTime value.
Integer | to fill. |
Reimplemented from drizzled::Date.
Definition at line 1139 of file temporal.cc.
Referenced by drizzled::Field_datetime::store_time().
void drizzled::Date::to_julian_day_number | ( | int64_t * | to | ) | const [inherited] |
Fills a supplied int64_t with the Julian Day Number representation of this Date.
Julian Day Number is the monotonically increasing number of days from the start of the Julian calendar (~4713 B.C.)
julian day is the ordinal day number of a day in a year.
int64_t | to fill |
Definition at line 1179 of file temporal.cc.
References drizzled::julian_day_number_from_gregorian_date().
Referenced by drizzled::Item_func_to_days::val_int(), and drizzled::Item_func_to_days::val_int_endpoint().
int drizzled::DateTime::to_string | ( | char * | to, |
size_t | to_len | ||
) | const [virtual, inherited] |
Fills a supplied char string with a string representation of the DateTime value.
C-String | to fill |
Length | of to C-String |
Reimplemented from drizzled::Date.
Reimplemented in drizzled::MicroTimestamp.
Definition at line 1051 of file temporal.cc.
Referenced by drizzled::Field_datetime::store_time(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::Timestamp::to_time_t | ( | time_t & | to | ) | const [virtual] |
Attempts to convert the Timestamp value into a supplied time_t.
Pointer | to a time_t to convert to |
Reimplemented from drizzled::Date.
Definition at line 1402 of file temporal.cc.
Referenced by drizzled::field::Microtime::store(), drizzled::field::Epoch::store(), and drizzled::Item_func_unix_timestamp::val_int().
void drizzled::DateTime::to_tm | ( | struct tm * | to | ) | const [virtual, inherited] |
Fills a supplied tm pointer with an representation of the DateTime value.
tm | to fill. |
Reimplemented from drizzled::Date.
Definition at line 1163 of file temporal.cc.
uint32_t drizzled::Temporal::useconds | ( | ) | const [inline, inherited] |
Returns the microsseconds component.
Definition at line 129 of file temporal.h.
Referenced by drizzled::Item_func_microsecond::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_year::val_int_endpoint(), and drizzled::Item_func_to_days::val_int_endpoint().
uint32_t drizzled::Temporal::years | ( | ) | const [inline, inherited] |
Returns the years component.
Definition at line 163 of file temporal.h.
Referenced by drizzled::Item_func_last_day::get_temporal(), drizzled::Item_func_curdate_utc::store_now_in_TIME(), drizzled::Item_func_curdate_local::store_now_in_TIME(), drizzled::Item_func_year::val_int(), drizzled::Item_func_weekday::val_int(), drizzled::Item_extract::val_int(), drizzled::Item_func_dayofyear::val_int(), and drizzled::Item_func_year::val_int_endpoint().
friend class TemporalFormat [friend, inherited] |
All Temporal derived classes must implement conversion routines for converting to and from a string. Subclasses implement other conversion routines, but should always follow these notes:
1) Ensure that ALL from_xxx methods call is_valid() 2) Ensure that ALL to_xxx methods are void returns and do not call is_valid()
This minimizes the repeated bounds-checking to just the conversion from_xxx routines.
Definition at line 197 of file temporal.h.
bool drizzled::Temporal::_overflow [protected, inherited] |
Set on some operator overloads. Indicates that an overflow occurred.
Definition at line 106 of file temporal.h.
Referenced by drizzled::Temporal::overflow().
const int drizzled::DateTime::MAX_STRING_LENGTH = 27 [static, inherited] |
Maximum length of C-String needed to represent type (including '\0').
Reimplemented from drizzled::Date.
Reimplemented in drizzled::MicroTimestamp.
Definition at line 626 of file temporal.h.
Referenced by drizzled::Item_func_unix_timestamp::val_int().