static int datetime_mtime(const ObObjCastParams ¶ms, const ObExprObj &in, ObExprObj &out) { UNUSED(params); OB_ASSERT(in.get_type() == ObDateTimeType); out.set_mtime(static_cast<ObModifyTime> (1000L * 1000L * in.get_datetime())); return OB_SUCCESS; }
static int datetime_bool(const ObObjCastParams ¶ms, const ObExprObj &in, ObExprObj &out) { UNUSED(params); OB_ASSERT(in.get_type() == ObDateTimeType); out.set_bool(static_cast<bool> (in.get_datetime())); return OB_SUCCESS; }
static int datetime_decimal(const ObObjCastParams ¶ms, const ObExprObj &in, ObExprObj &out) { UNUSED(params); OB_ASSERT(in.get_type() == ObDateTimeType); ObNumber num; num.from(static_cast<int64_t> (in.get_datetime())); out.set_decimal(num); return OB_SUCCESS; }
static int datetime_varchar(const ObObjCastParams ¶ms, const ObExprObj &in, ObExprObj &out) { int ret = OB_SUCCESS; UNUSED(params); OB_ASSERT(in.get_type() == ObDateTimeType); time_t t = static_cast<time_t> (in.get_datetime()); struct tm gtm; localtime_r(&t, >m); ret = varchar_printf(out, "%04d-%02d-%02d %02d:%02d:%02d", gtm.tm_year + 1900, gtm.tm_mon + 1, gtm.tm_mday, gtm.tm_hour, gtm.tm_min, gtm.tm_sec); return ret; }