Struct oracle::IntervalDS [] [src]

pub struct IntervalDS { /* fields omitted */ }

Oracle-specific Interval Day to Second data type.

This struct doesn't have arithmetic methods and they won't be added to avoid reinventing the wheel. If you need methods such as adding an interval to a timestamp, enable chrono feature and use chrono::Duration instead.

Examples

use oracle::IntervalDS;

// Create an interval by new().
let intvl1 = IntervalDS::new(1, 2, 3, 4, 500000000);

// All arguments must be zero or negative to create a negative interval.
let intvl2 = IntervalDS::new(-1, -2, -3, -4, -500000000);

// Convert to string.
assert_eq!(intvl1.to_string(), "+000000001 02:03:04.500000000");
assert_eq!(intvl2.to_string(), "-000000001 02:03:04.500000000");

// Create an interval with leading field and fractional second precisions.
let intvl3 = IntervalDS::new(1, 2, 3, 4, 500000000).and_prec(2, 3);

// The string representation depends on the precisions.
assert_eq!(intvl3.to_string(), "+01 02:03:04.500");

// Precisions are ignored when intervals are compared.
assert!(intvl1 == intvl3);

// Create an interval from string.
let intvl4: IntervalDS = "+1 02:03:04.50".parse().unwrap();

// The precisions are determined by number of decimal digits in the string.
assert_eq!(intvl4.lfprec(), 1);
assert_eq!(intvl4.fsprec(), 2);

Fetch and bind interval values.

use oracle::{Connection, IntervalDS, OracleType, Timestamp};

let conn = Connection::new("scott", "tiger", "").unwrap();

// Fetch IntervalDS
let sql = "select interval '+01 02:03:04.500' day to second(3) from dual";
let mut stmt = conn.execute(sql, &[]).unwrap();
let row = stmt.fetch().unwrap();
let intvl: IntervalDS = row.get(0).unwrap();
assert_eq!(intvl.to_string(), "+01 02:03:04.500");

// Bind IntervalDS
let sql = "begin \
             :outval := to_timestamp('2017-08-09', 'yyyy-mm-dd') + :inval; \
           end;";
let stmt = conn.execute(sql,
                        &[&OracleType::Timestamp(3), // bind null as timestamp(3)
                          &intvl, // bind the intvl variable
                         ]).unwrap();
let outval: Timestamp = stmt.bind_value(1).unwrap(); // get the first bind value.
// 2017-08-09 + (1 day, 2 hours, 3 minutes and 4.5 seconds)
assert_eq!(outval.to_string(), "2017-08-10 02:03:04.500");

Methods

impl IntervalDS
[src]

[src]

Creates a new IntervalDS.

Valid values are:

argument valid values
days -999999999 to 999999999
hours -23 to 23
minutes -59 to 59
seconds -59 to 59
nanoseconds -999999999 to 999999999

All arguments must be zero or positive to create a positive interval. All arguments must be zero or negative to create a negative interval.

[src]

Creates a new IntervalDS with precisions.

lfprec and fsprec are leading field precision and fractional second precision respectively. The precisions affect text representation of IntervalDS. They don't affect comparison.

[src]

Returns days component.

[src]

Returns hours component.

[src]

Returns minutes component.

[src]

Returns seconds component.

[src]

Returns nanoseconds component.

[src]

Returns leading field precision.

[src]

Returns fractional second precision.

Trait Implementations

impl Debug for IntervalDS
[src]

[src]

Formats the value using the given formatter.

impl Clone for IntervalDS
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl Copy for IntervalDS
[src]

impl PartialEq for IntervalDS
[src]

[src]

This method tests for self and other values to be equal, and is used by ==. Read more

1.0.0
[src]

This method tests for !=.

impl Display for IntervalDS
[src]

[src]

Formats the value using the given formatter. Read more

impl FromStr for IntervalDS
[src]

The associated error which can be returned from parsing.

[src]

Parses a string s to return a value of this type. Read more

impl FromSql for IntervalDS
[src]

impl ToSqlNull for IntervalDS
[src]

impl ToSql for IntervalDS
[src]

[src]

[src]