gluesql_test_suite/ast_builder/function/datetime/
current_date_and_time.rs

1use {
2    crate::*,
3    gluesql_core::{
4        ast_builder::{function as f, *},
5        prelude::{Payload, Value::*},
6    },
7};
8
9test_case!(current_date_and_time, {
10    macro_rules! t {
11        ($timestamp: expr) => {
12            $timestamp.parse().unwrap()
13        };
14    }
15
16    let glue = get_glue!();
17
18    let actual = table("Record")
19        .create_table()
20        .add_column("id INTEGER PRIMARY KEY")
21        .add_column("time_stamp TIMESTAMP")
22        .execute(glue)
23        .await;
24    let expected = Ok(Payload::Create);
25    assert_eq!(actual, expected, "create table - Record");
26
27    let actual = table("Record")
28        .insert()
29        .values(vec![
30            "1, '2022-12-23T05:30:11.164932863'",
31            "2, NOW()",
32            "3, '9999-12-31T23:59:40.364832862'",
33        ])
34        .execute(glue)
35        .await;
36    let expected = Ok(Payload::Insert(3));
37    assert_eq!(actual, expected, "insert - Record");
38
39    // Now
40    let actual = table("Record")
41        .select()
42        .filter(col("time_stamp").gt(f::now()))
43        .project("id, time_stamp")
44        .execute(glue)
45        .await;
46    let expected = Ok(select!(
47        id  | time_stamp
48        I64 | Timestamp;
49        3     t!("9999-12-31T23:59:40.364832862")
50    ));
51    assert_eq!(actual, expected, "now");
52});