Я настраиваю функцию reminder
в приложении личного помощника. Приложение принимает детали напоминания в виде HTML-формы, которая также включает поля ввода date
и time
.
Я использую golang для создания своего сервера и создал базу данных sqlite, используя его. Но значение даты и времени из формы не сохраняется в БД, а другие поля, такие как заголовок, описание и т. Д., Сохраняются. Какой тип данных я должен использовать для своих полей времени и даты в БД sqlite?
Я пытался использовать TEXT
в качестве типа данных для даты и времени, но он не работает.
Форма ввода:
...
<div class="form-group">
<label for="date">Date</label>
<input type="date" class="form-control" id="date" data-ng-model="formData.remDate" required>
</div>
<div class="form-group">
<label for="time">Time</label>
<input type="time" class="form-control" id="time" data-ng-model="formData.remTime" required>
</div>
...
Это reminder object
, который генерируется из формы:
{title: "learn golang", description: "How do I save date and time in database?", date: Mon Apr 08 2019 00:00:00 GMT+0530 (India Standard Time), time: Thu Jan 01 1970 20:00:00 GMT+0530 (India Standard Time)}
Файл Golang для создания и хранения в БД:
package controllers
import (
"net/http"
"database/sql"
"fmt"
"strconv"
_ "github.com/mattn/go-sqlite3"
)
type reminder struct {
id int
title string
description string
date string
time string
}
func ReminderController(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
r.ParseForm()
request := reminder{
title: r.FormValue("title"),
description: r.FormValue("description"),
date: r.FormValue("date"),
time: r.FormValue("time"),
}
fmt.Println(request)
AddReminder(request, w)
}
func prepareDB() {
database, err := sql.Open("sqlite3", "./jarvis.db")
checkErr(err)
statement, err := database.Prepare("CREATE TABLE IF NOT EXISTS reminder (id INTEGER PRIMARY KEY, title TEXT, description TEXT, date TEXT, time TEXT")
checkErr(err)
statement.Exec()
}
func AddReminder(reminderObject reminder, res http.ResponseWriter) {
prepareDB()
database, err := sql.Open("sqlite3", "./jarvis.db")
checkErr(err)
statement, err := database.Prepare("INSERT INTO reminder (title, description, date, time) VALUES (?,?,?,?) ")
checkErr(err)
fmt.Println(reminderObject.title)
statement.Exec(reminderObject.title, reminderObject.description, reminderObject.date, reminderObject.time)
ShowReminder()
res.Write([]byte(`{"status": "success", "message": "Reminder has been set !"}`))
}
func ShowReminder() {
prepareDB()
database, err := sql.Open("sqlite3", "./jarvis.db")
checkErr(err)
rows, err := database.Query("SELECT id, title, description, date, time FROM reminder")
checkErr(err)
var id int
var title string
var description string
var date string
var time string
for rows.Next() {
rows.Scan(&id, &title, &description, &date, &time)
fmt.Println(strconv.Itoa(id) + ": " + title + " " + description + "\nEnd Time : " + date + ":" + time)
}
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
Выходные данные, генерируемые в консоли Go:
3: learn golang How do I save date and time in database?
End Time : :