Class: OracleDB::Timestamp

Inherits:
Object
  • Object
show all
Defined in:
lib/oracledb.rb,
ext/oracledb/rboradb_datetime.c

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'ext/oracledb/rboradb_datetime.c', line 49

static VALUE timestamp_initialize(int argc, VALUE *argv, VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    VALUE year, month, day, hour, minute, second, fsecond, tz_hour_offset, tz_minute_offset;

    rb_scan_args(argc, argv, "09", &year, &month, &day, &hour, &minute, &second, &fsecond, &tz_hour_offset, &tz_minute_offset);
    val->year = NIL_P(year) ? 1 : NUM2INT(year);
    val->month = NIL_P(month) ? 1 : NUM2UINT(month);
    val->day = NIL_P(day) ? 1 : NUM2UINT(day);
    val->hour = NIL_P(hour) ? 0 : NUM2UINT(hour);
    val->minute = NIL_P(minute) ? 0 : NUM2UINT(minute);
    val->second = NIL_P(second) ? 0 : NUM2UINT(second);
    val->fsecond = NIL_P(fsecond) ? 0 : NUM2UINT(fsecond);
    val->tzHourOffset = NIL_P(tz_hour_offset) ? 0 : NUM2INT(tz_hour_offset);
    val->tzMinuteOffset = NIL_P(tz_minute_offset) ? 0 : NUM2INT(tz_minute_offset);
    return Qnil;
}

Instance Method Details

#dayObject



105
106
107
108
109
# File 'ext/oracledb/rboradb_datetime.c', line 105

static VALUE timestamp_day(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return INT2FIX(val->day);
}

#fsecondObject



129
130
131
132
133
# File 'ext/oracledb/rboradb_datetime.c', line 129

static VALUE timestamp_fsecond(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return UINT2NUM(val->fsecond);
}

#hourObject



111
112
113
114
115
# File 'ext/oracledb/rboradb_datetime.c', line 111

static VALUE timestamp_hour(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return INT2FIX(val->hour);
}

#inspectObject



171
172
173
174
175
# File 'lib/oracledb.rb', line 171

def inspect
  "#<#{self.class}:#{self.to_s}>"
rescue
  "#<#{self.class}:ERROR: #{$!.message}>"
end

#minuteObject



117
118
119
120
121
# File 'ext/oracledb/rboradb_datetime.c', line 117

static VALUE timestamp_minute(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return INT2FIX(val->minute);
}

#monthObject



99
100
101
102
103
# File 'ext/oracledb/rboradb_datetime.c', line 99

static VALUE timestamp_month(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return INT2FIX(val->month);
}

#secondObject



123
124
125
126
127
# File 'ext/oracledb/rboradb_datetime.c', line 123

static VALUE timestamp_second(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return INT2FIX(val->second);
}

#to_aObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'ext/oracledb/rboradb_datetime.c', line 67

static VALUE timestamp_to_a(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    VALUE ary = rb_ary_new_capa(9);
    rb_ary_push(ary, INT2FIX(val->year));
    rb_ary_push(ary, INT2FIX(val->month));
    rb_ary_push(ary, INT2FIX(val->day));
    rb_ary_push(ary, INT2FIX(val->hour));
    rb_ary_push(ary, INT2FIX(val->minute));
    rb_ary_push(ary, INT2FIX(val->second));
    rb_ary_push(ary, UINT2NUM(val->fsecond));
    rb_ary_push(ary, INT2FIX(val->tzHourOffset));
    rb_ary_push(ary, INT2FIX(val->tzMinuteOffset));
    return ary;
}

#to_sObject



83
84
85
86
87
88
89
90
91
# File 'ext/oracledb/rboradb_datetime.c', line 83

static VALUE timestamp_to_s(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    char sign = (val->tzHourOffset >= 0 && val->tzMinuteOffset >= 0) ? '+' : '-';
    return rb_sprintf("%04d-%02u-%02u %02u:%02u:%02u.%09u %c%02d:%02d",
                      val->year, val->month, val->day,
                      val->hour, val->minute, val->second,
                      val->fsecond, sign, abs(val->tzHourOffset), abs(val->tzMinuteOffset));
}

#tz_hour_offsetObject



135
136
137
138
139
# File 'ext/oracledb/rboradb_datetime.c', line 135

static VALUE timestamp_tz_hour_offset(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return INT2FIX(val->tzHourOffset);
}

#tz_minute_offsetObject



141
142
143
144
145
# File 'ext/oracledb/rboradb_datetime.c', line 141

static VALUE timestamp_tz_minute_offset(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return INT2FIX(val->tzMinuteOffset);
}

#yearObject



93
94
95
96
97
# File 'ext/oracledb/rboradb_datetime.c', line 93

static VALUE timestamp_year(VALUE self)
{
    dpiTimestamp *val = To_Timestamp(self);
    return INT2FIX(val->year);
}