SELECT * FROM records WHERE start_at = '2023-03-20 05:03:00'; を"2023-03-20"が含まれているものだけを条件にするには、どのようなSQL文になりますか
SELECT * FROM records WHERE start_at::date = '2023-03-20';
プログラムはこちら
// f:\しゅらばしゅう\有吉先生データ\Moove\2023-07/test5.go
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/lib/pq"
)
type Location struct {
Lat float64 `json:"lat"`
Lng float64 `json:"lng"`
}
type Record struct {
ID int `json:"id"`
UserID int `json:"user_id"`
Distance float64 `json:"distance"`
Place []Location `json:"place"`
Speed []float64 `json:"speed"`
Prediction int `json:"prediction_type"`
StartAt string `json:"start_at"`
EndAt string `json:"end_at"`
}
func main() {
// PostgreSQL データベースへの接続情報
const (
host = "192.168.0.23"
port = 15432
user = "postgres"
password = "password"
dbname = "moove"
)
// PostgreSQL データベースへの接続
dbinfo := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)
db, err := sql.Open("postgres", dbinfo)
if err != nil {
panic(err)
}
defer db.Close()
fmt.Println("Successfully connected!")
// 検索したい日付
var targetDate string = "2023-03-03"
// 特定の日付を含むレコードを取得するクエリ
query := fmt.Sprintf("SELECT id, user_id FROM records WHERE start_at::date = '%s'", targetDate)
fmt.Println("pass1")
rows, err := db.Query(query)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
fmt.Println("pass2")
// 各行を繰り返し処理
for rows.Next() {
// ここには、取得したいカラムに応じた変数を定義します
var column1, column2 int // これは、idとuser_idのことです
// 必要に応じて他のカラムも追加
err := rows.Scan(&column1,&column2)
if err != nil {
log.Fatal(err)
}
fmt.Println(column1, column2) // 取得したデータを出力
// 他のカラムも出力する場合は、ここに追加
}
// 繰り返し処理後のエラーをチェック
err = rows.Err()
if err != nil {
log.Fatal(err)
}
}