Difference between revisions of "Pgtype"

From UVOO Tech Wiki
Jump to navigation Jump to search
(Created page with "timeVal := pgtype.Timestamptz{Status: pgtype.Null} timeVal.Set(theTime)")
 
Line 1: Line 1:
 +
```
 
timeVal := pgtype.Timestamptz{Status: pgtype.Null}
 
timeVal := pgtype.Timestamptz{Status: pgtype.Null}
 
timeVal.Set(theTime)
 
timeVal.Set(theTime)
 +
 +
 +
select extract(epoch from ts) as time from test1;
 +
```
 +
 +
a.go
 +
```
 +
package main
 +
 +
import (
 +
        "context"
 +
        "fmt"
 +
        "github.com/jackc/pgtype"
 +
        "github.com/jackc/pgx/v4"
 +
        "os"
 +
        "time"
 +
)
 +
 +
// func testInsert() error {
 +
func testInsert() error {
 +
        ctx := context.Background()
 +
        conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
 +
        if err != nil {
 +
                fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
 +
                os.Exit(1)
 +
        }
 +
        defer conn.Close(ctx)
 +
        tx, err := conn.Begin(ctx)
 +
        if err != nil {
 +
                return err
 +
        }
 +
        defer tx.Rollback(ctx)
 +
 +
        name := "test4"
 +
        nowtime := time.Now()
 +
        // durationtime := time.Duration(500000)
 +
        durationtime := time.Duration(5000000000)
 +
        // sql := "insert into test1(name, duration, ts) values ('test2', '00:00:00.005', NOW())"
 +
        _, err = tx.Exec(ctx, "insert into test1(name, duration, ts) values ($1, $2, $3)", name, durationtime, nowtime)
 +
        // _, err = tx.Exec("insert into foo(id) values (1)")
 +
//      _, err = tx.Exec(ctx, sql)
 +
        if err != nil {
 +
                return err
 +
        }
 +
 +
        err = tx.Commit(ctx)
 +
        if err != nil {
 +
                return err
 +
        }
 +
        x := "foo"
 +
        err2 := fmt.Errorf("math: square root of negative number %v", x)
 +
        return err2
 +
}
 +
 +
func main() {
 +
        r := testInsert()
 +
        fmt.Printf("r: %v\n", r)
 +
 +
 +
        conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
 +
        if err != nil {
 +
                fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
 +
                os.Exit(1)
 +
        }
 +
        defer conn.Close(context.Background())
 +
 +
        var name string
 +
        var duration pgtype.Interval
 +
        var ts pgtype.Time
 +
        err = conn.QueryRow(context.Background(), "select name, duration, ts from test1 where name=$1", "test1").Scan(&name, &duration, &ts)
 +
        if err != nil {
 +
                fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
 +
                os.Exit(1)
 +
        }
 +
 +
        fmt.Println("row: ", name, duration, ts)
 +
 +
        // err = conn.exec(context.Background(), sql)
 +
        // insert into test1(name, duration, ts) values ('test1', '00:00:00.005', NOW());
 +
 +
        // loc, _ := time.LoadLocation("Asia/Shanghai")
 +
        //set timezone,
 +
        // now := time.Now().In(loc)
 +
 +
        // var timeTz pgtype.Timestamptz
 +
        //timeTz = pgtype.Timestamptz{Status: pgtype.Null}
 +
        // timeTz, _ = time.Parse("00:00:00.000005", "00:00:00.000005")
 +
        const layout = "00:00:00.000005"
 +
        timeTz, _ := time.Parse(layout, "00:00:00.000005")
 +
        fmt.Printf("timeTz: %v\n", timeTz)
 +
        // pgTime = pgtype.Timestamptz{Time: timeTz, Status: pgtype.Null}
 +
        var pgTime pgtype.Timestamptz
 +
        pgTime = pgtype.Timestamptz{Time: timeTz}
 +
        fmt.Printf("pgTime: %v\n", pgTime)
 +
        // timeTz = pgtype.Timestamptz{Time: "00:00:00.000005", Status: pgtype.Null}
 +
        var tnow time.Time
 +
        tnow = time.Now()
 +
        fmt.Printf("tnow: %v\n", tnow)
 +
        os.Exit(1)
 +
        var v int32
 +
        v = 1
 +
        //var pv pgtype.Int2
 +
        // pv = pgtype.Int2(1)
 +
        // var pv int16
 +
        // pv := pgtype.Int2(1)
 +
        // var t time.Duration
 +
        // var t pgtype.Interval
 +
        // t = "00:00:00.1"
 +
        t := 1
 +
        fmt.Printf("t: %v\n", t)
 +
        // pt := pgtype.Interval(t/1000)
 +
        // pt := t
 +
 +
        // var pt pgtype.Interval
 +
        // pt = pgtype.Interval("40:00:00")
 +
        pt := 1
 +
 +
        a, b := time.Parse("2006-01-02 3:04PM", "1970-01-01 9:00PM")
 +
        fmt.Printf("a %v\n", a)
 +
        fmt.Printf("b %v\n", b)
 +
        timeVal := pgtype.Timestamptz{Status: pgtype.Null}
 +
        // timeVal := pgtype.Interval{Microseconds:10000, Status: pgtype.Null}
 +
        // timeVal := pgtype.Interval{Microseconds:10000}
 +
        // timeDur := time.Time(timeVal)
 +
        timeDur := timeVal
 +
        fmt.Printf("timeVal %v\n", timeVal)
 +
        fmt.Printf("timeDur %v\n", timeDur)
 +
 +
        tt := time.Now()
 +
        // tunixmicro := time.Now().UnixMicro()
 +
        tunixmicro := tt.UnixMicro()
 +
        // j := pgtype.Interval{Microseconds:tt}
 +
        // j := pgtype.Time{Microseconds:tt}
 +
        // j := pgtype.Time(tt)
 +
        var j time.Time
 +
        j = tt
 +
        fmt.Printf("j: %v\n", j)
 +
        var jt pgtype.Timestamptz
 +
        // jt = pgtype.Timestamptz{Time: j, Status: pgtype.Null}
 +
        jt = pgtype.Timestamptz{Time: j, Status: 1}
 +
        // jt = pgtype.Timestamptz{Time: j}
 +
        fmt.Printf("pt: %v\n", jt)
 +
        fmt.Printf("tunixmicro: %v\n", tunixmicro)
 +
        os.Exit(1)
 +
        // tt := time.Now().UnixNano()
 +
        // pgtype.Timestamp(tt)
 +
        fmt.Println(tt)
 +
        // fmt.Println(t.String())
 +
        // fmt.Println(t.Format("2006-01-02 15:04:05"))
 +
        // fmt.Printf("timeVal %v\n", time.Duration(timeVal))
 +
 +
        // *dst = pgtype.Interval{Microseconds: value / 1000, Status: Present}
 +
        // pt = pgtype.Interval{Microseconds: t / 1000, Status: Present}
 +
        // pt = pgtype.Interval{Microseconds: t / 1000, Status: "Present"}
 +
        fmt.Printf("pt: %v\n", pt)
 +
 +
        pv := 1
 +
        fmt.Printf("v: %v pv: %v\n", v, pv)
 +
        // "2006-01-02 15:04:05.999999999Z07:00:00"
 +
 +
        var n int = 97
 +
        m := int64(n)
 +
        fmt.Printf("m: %v\n", m)
 +
 +
        var badboys int = 1921
 +
 +
        // explicit type conversion
 +
        var badboys2 float64 = float64(badboys)
 +
 +
        var badboys3 int64 = int64(badboys)
 +
 +
        var badboys4 uint = uint(badboys)
 +
        fmt.Printf("v: %v pv: %v, %v", badboys2, badboys3, badboys4)
 +
}
 +
```

Revision as of 23:48, 23 March 2022

timeVal := pgtype.Timestamptz{Status: pgtype.Null}
timeVal.Set(theTime)


select extract(epoch from ts) as time from test1;

a.go

package main

import (
        "context"
        "fmt"
        "github.com/jackc/pgtype"
        "github.com/jackc/pgx/v4"
        "os"
        "time"
)

// func testInsert() error {
func testInsert() error {
        ctx := context.Background()
        conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
        if err != nil {
                fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
                os.Exit(1)
        }
        defer conn.Close(ctx)
        tx, err := conn.Begin(ctx)
        if err != nil {
                return err
        }
        defer tx.Rollback(ctx)

        name := "test4"
        nowtime := time.Now()
        // durationtime := time.Duration(500000)
        durationtime := time.Duration(5000000000)
        // sql := "insert into test1(name, duration, ts) values ('test2', '00:00:00.005', NOW())"
        _, err = tx.Exec(ctx, "insert into test1(name, duration, ts) values ($1, $2, $3)", name, durationtime, nowtime)
        // _, err = tx.Exec("insert into foo(id) values (1)")
//      _, err = tx.Exec(ctx, sql)
        if err != nil {
                return err
        }

        err = tx.Commit(ctx)
        if err != nil {
                return err
        }
        x := "foo"
        err2 := fmt.Errorf("math: square root of negative number %v", x)
        return err2
}

func main() {
        r := testInsert()
        fmt.Printf("r: %v\n", r)


        conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
        if err != nil {
                fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
                os.Exit(1)
        }
        defer conn.Close(context.Background())

        var name string
        var duration pgtype.Interval
        var ts pgtype.Time
        err = conn.QueryRow(context.Background(), "select name, duration, ts from test1 where name=$1", "test1").Scan(&name, &duration, &ts)
        if err != nil {
                fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
                os.Exit(1)
        }

        fmt.Println("row: ", name, duration, ts)

        // err = conn.exec(context.Background(), sql)
        // insert into test1(name, duration, ts) values ('test1', '00:00:00.005', NOW());

        // loc, _ := time.LoadLocation("Asia/Shanghai")
        //set timezone,
        // now := time.Now().In(loc)

        // var timeTz pgtype.Timestamptz
        //timeTz = pgtype.Timestamptz{Status: pgtype.Null}
        // timeTz, _ = time.Parse("00:00:00.000005", "00:00:00.000005")
        const layout = "00:00:00.000005"
        timeTz, _ := time.Parse(layout, "00:00:00.000005")
        fmt.Printf("timeTz: %v\n", timeTz)
        // pgTime = pgtype.Timestamptz{Time: timeTz, Status: pgtype.Null}
        var pgTime pgtype.Timestamptz
        pgTime = pgtype.Timestamptz{Time: timeTz}
        fmt.Printf("pgTime: %v\n", pgTime)
        // timeTz = pgtype.Timestamptz{Time: "00:00:00.000005", Status: pgtype.Null}
        var tnow time.Time
        tnow = time.Now()
        fmt.Printf("tnow: %v\n", tnow)
        os.Exit(1)
        var v int32
        v = 1
        //var pv pgtype.Int2
        // pv = pgtype.Int2(1)
        // var pv int16
        // pv := pgtype.Int2(1)
        // var t time.Duration
        // var t pgtype.Interval
        // t = "00:00:00.1"
        t := 1
        fmt.Printf("t: %v\n", t)
        // pt := pgtype.Interval(t/1000)
        // pt := t

        // var pt pgtype.Interval
        // pt = pgtype.Interval("40:00:00")
        pt := 1

        a, b := time.Parse("2006-01-02 3:04PM", "1970-01-01 9:00PM")
        fmt.Printf("a %v\n", a)
        fmt.Printf("b %v\n", b)
        timeVal := pgtype.Timestamptz{Status: pgtype.Null}
        // timeVal := pgtype.Interval{Microseconds:10000, Status: pgtype.Null}
        // timeVal := pgtype.Interval{Microseconds:10000}
        // timeDur := time.Time(timeVal)
        timeDur := timeVal
        fmt.Printf("timeVal %v\n", timeVal)
        fmt.Printf("timeDur %v\n", timeDur)

        tt := time.Now()
        // tunixmicro := time.Now().UnixMicro()
        tunixmicro := tt.UnixMicro()
        // j := pgtype.Interval{Microseconds:tt}
        // j := pgtype.Time{Microseconds:tt}
        // j := pgtype.Time(tt)
        var j time.Time
        j = tt
        fmt.Printf("j: %v\n", j)
        var jt pgtype.Timestamptz
        // jt = pgtype.Timestamptz{Time: j, Status: pgtype.Null}
        jt = pgtype.Timestamptz{Time: j, Status: 1}
        // jt = pgtype.Timestamptz{Time: j}
        fmt.Printf("pt: %v\n", jt)
        fmt.Printf("tunixmicro: %v\n", tunixmicro)
        os.Exit(1)
        // tt := time.Now().UnixNano()
        // pgtype.Timestamp(tt)
        fmt.Println(tt)
        // fmt.Println(t.String())
        // fmt.Println(t.Format("2006-01-02 15:04:05"))
        // fmt.Printf("timeVal %v\n", time.Duration(timeVal))

        // *dst = pgtype.Interval{Microseconds: value / 1000, Status: Present}
        // pt = pgtype.Interval{Microseconds: t / 1000, Status: Present}
        // pt = pgtype.Interval{Microseconds: t / 1000, Status: "Present"}
        fmt.Printf("pt: %v\n", pt)

        pv := 1
        fmt.Printf("v: %v pv: %v\n", v, pv)
        // "2006-01-02 15:04:05.999999999Z07:00:00"

        var n int = 97
        m := int64(n)
        fmt.Printf("m: %v\n", m)

        var badboys int = 1921

        // explicit type conversion
        var badboys2 float64 = float64(badboys)

        var badboys3 int64 = int64(badboys)

        var badboys4 uint = uint(badboys)
        fmt.Printf("v: %v pv: %v, %v", badboys2, badboys3, badboys4)
}