mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 05:59:14 +00:00
48 lines
877 B
Go
48 lines
877 B
Go
package statement_test
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/ncruces/go-sqlite3"
|
|
_ "github.com/ncruces/go-sqlite3/embed"
|
|
"github.com/ncruces/go-sqlite3/ext/statement"
|
|
)
|
|
|
|
func Example() {
|
|
db, err := sqlite3.Open(":memory:")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
|
|
statement.Register(db)
|
|
|
|
err = db.Exec(`
|
|
CREATE VIRTUAL TABLE split_date USING statement((
|
|
SELECT
|
|
strftime('%Y', :date) AS year,
|
|
strftime('%m', :date) AS month,
|
|
strftime('%d', :date) AS day
|
|
))`)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
stmt, _, err := db.Prepare(`SELECT * FROM split_date('2022-02-22')`)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer stmt.Close()
|
|
|
|
if stmt.Step() {
|
|
fmt.Printf("Twosday was %d-%d-%d", stmt.ColumnInt(0), stmt.ColumnInt(1), stmt.ColumnInt(2))
|
|
}
|
|
if err := stmt.Reset(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Output:
|
|
// Twosday was 2022-2-22
|
|
}
|