Struct oracle::sql_type::IntervalDS

source ·
pub struct IntervalDS { /* private fields */ }
Expand description

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


// 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()?;

// 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.

let conn = Connection::connect("scott", "tiger", "")?;

// Fetch IntervalDS
let sql = "select interval '+01 02:03:04.500' day to second(3) from dual";
let intvl = conn.query_row_as::<IntervalDS>(sql, &[])?;
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 mut stmt = conn.statement(sql).build()?;
stmt.execute(&[&OracleType::Timestamp(3), // bind null as timestamp(3)
               &intvl, // bind the intvl variable
              ])?;
let outval: Timestamp = stmt.bind_value(1)?; // 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");

Implementations§

source§

impl IntervalDS

source

pub fn new( days: i32, hours: i32, minutes: i32, seconds: i32, nanoseconds: i32 ) -> IntervalDS

Creates a new IntervalDS.

Valid values are:

argumentvalid 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.

source

pub fn and_prec(&self, lfprec: u8, fsprec: u8) -> IntervalDS

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.

source

pub fn days(&self) -> i32

Returns days component.

source

pub fn hours(&self) -> i32

Returns hours component.

source

pub fn minutes(&self) -> i32

Returns minutes component.

source

pub fn seconds(&self) -> i32

Returns seconds component.

source

pub fn nanoseconds(&self) -> i32

Returns nanoseconds component.

source

pub fn lfprec(&self) -> u8

Returns leading field precision.

source

pub fn fsprec(&self) -> u8

Returns fractional second precision.

Trait Implementations§

source§

impl Clone for IntervalDS

source§

fn clone(&self) -> IntervalDS

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for IntervalDS

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for IntervalDS

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FromSql for IntervalDS

source§

impl FromStr for IntervalDS

§

type Err = ParseOracleTypeError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

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

impl PartialEq for IntervalDS

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl ToSql for IntervalDS

source§

fn oratype(&self, _conn: &Connection) -> Result<OracleType>

source§

fn to_sql(&self, val: &mut SqlValue<'_>) -> Result<()>

source§

impl ToSqlNull for IntervalDS

source§

impl Copy for IntervalDS

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> RowValue for T
where T: FromSql,

source§

fn get(row: &Row) -> Result<T, Error>

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.