diesel::pg::expression::extensions

Trait IntervalDsl

Source
pub trait IntervalDsl:
    Sized
    + From<i32>
    + Mul<Self, Output = Self> {
Show 18 methods // Required methods fn microseconds(self) -> PgInterval; fn days(self) -> PgInterval; fn months(self) -> PgInterval; // Provided methods fn milliseconds(self) -> PgInterval { ... } fn seconds(self) -> PgInterval { ... } fn minutes(self) -> PgInterval { ... } fn hours(self) -> PgInterval { ... } fn weeks(self) -> PgInterval { ... } fn years(self) -> PgInterval { ... } fn microsecond(self) -> PgInterval { ... } fn millisecond(self) -> PgInterval { ... } fn second(self) -> PgInterval { ... } fn minute(self) -> PgInterval { ... } fn hour(self) -> PgInterval { ... } fn day(self) -> PgInterval { ... } fn week(self) -> PgInterval { ... } fn month(self) -> PgInterval { ... } fn year(self) -> PgInterval { ... }
}
Available on crate feature postgres_backend only.
Expand description

A DSL added to integers and f64 to construct PostgreSQL intervals.

The behavior of these methods when called on NAN or Infinity, or when overflow occurs is unspecified.

§Examples

diesel::sql_query("INSERT INTO users (name, created_at) VALUES
    ('Sean', NOW()), ('Tess', NOW() - '5 minutes'::interval),
    ('Jim', NOW() - '10 minutes'::interval)")
    .execute(connection)
    .unwrap();

let mut data: Vec<String> = users
    .select(name)
    .filter(created_at.gt(now - 7.minutes()))
    .load(connection).unwrap();
assert_eq!(2, data.len());
assert_eq!("Sean".to_string(), data[0]);
assert_eq!("Tess".to_string(), data[1]);
diesel::sql_query("INSERT INTO users (name, created_at) VALUES
    ('Sean', NOW()), ('Tess', NOW() - '5 days'::interval),
    ('Jim', NOW() - '10 days'::interval)")
    .execute(connection)
    .unwrap();

let mut data: Vec<String> = users
    .select(name)
    .filter(created_at.gt(now - 7.days()))
    .load(connection).unwrap();
assert_eq!(2, data.len());
assert_eq!("Sean".to_string(), data[0]);
assert_eq!("Tess".to_string(), data[1]);

Required Methods§

Source

fn microseconds(self) -> PgInterval

Returns a PgInterval representing self as microseconds

Source

fn days(self) -> PgInterval

Returns a PgInterval representing self in days

Source

fn months(self) -> PgInterval

Returns a PgInterval representing self in months

Provided Methods§

Source

fn milliseconds(self) -> PgInterval

Returns a PgInterval representing self as milliseconds

Source

fn seconds(self) -> PgInterval

Returns a PgInterval representing self as seconds

Source

fn minutes(self) -> PgInterval

Returns a PgInterval representing self as minutes

Source

fn hours(self) -> PgInterval

Returns a PgInterval representing self as hours

Source

fn weeks(self) -> PgInterval

Returns a PgInterval representing self in weeks

Note: When called on a high precision float, the returned interval may be 1 microsecond different than the equivalent string passed to PostgreSQL.

Source

fn years(self) -> PgInterval

Returns a PgInterval representing self in weeks

Note: When called on a float, this method will mimic the behavior of PostgreSQL’s interval parsing, and will ignore units smaller than months.

assert_eq!(1.04.years(), 1.year());
assert_eq!(1.09.years(), 1.year() + 1.month());
Source

fn microsecond(self) -> PgInterval

Identical to microseconds

Source

fn millisecond(self) -> PgInterval

Identical to milliseconds

Source

fn second(self) -> PgInterval

Identical to seconds

Source

fn minute(self) -> PgInterval

Identical to minutes

Source

fn hour(self) -> PgInterval

Identical to hours

Source

fn day(self) -> PgInterval

Identical to days

Source

fn week(self) -> PgInterval

Identical to weeks

Source

fn month(self) -> PgInterval

Identical to months

Source

fn year(self) -> PgInterval

Identical to years

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl IntervalDsl for f64

Source§

impl IntervalDsl for i32

Source§

impl IntervalDsl for i64

Implementors§