Answer the question
In order to leave comments, you need to log in
Does not work out if checks whether the given time is included in the required interval?
Converted the string to the time format
defined the variables in the print output correctly
package main
//https://4gophers.ru/articles/go-i-sql-bazy-dannyh/#.WZShtvlSCUl работа с БД Pg
import (
"fmt" ///пакет стандартной библиотеки Базовый пакет для форматирования функций ввода
"time" ///пакет для аботы со временем
"database/sql" ///пакет для работы с БД
_ "github.com/lib/pq" //пакет для работы с БД
"log" ///пакет для логирования
"os" //системный пакет
)
////указываю постоянные значения подключения к БД и сокету FreeSWITCH
const (
DB_HOST = "127.0.0.1"
DB_USER = "postgres"
DB_PASSWORD = "postgres"
DB_NAME = "freeswitch"
)
////обьявляю глобальные переменные
var (
err error
id int
client int
id_dispach int
db *sql.DB ///
interval_time_start string
interval_time_end string
current_time time.Time ///тип данных время
convert_time_start time.Time
convert_time_end time.Time
)
/////функция проверки на ошибки
func checkErr(err error) {
if err != nil {
fmt.Println(err)
}
}
///Функция отправки SQL запросов в БД
func sql_req() {
rows, err := db.Query("SELECT client,id FROM dialer_golang WHERE state = 'called' ORDER BY RANDOM() LIMIT 1")
if err != nil {fmt.Println(err)}
defer rows.Close()
for rows.Next() {
rows.Scan(&client, &id) ///декодирую элементы которые хочу получить в БД
dialer_rows , err := db.Query("SELECT id_dispatch FROM dialer_golang WHERE client = $1 and state = 'called'",client)
if err != nil {fmt.Println(err)
return
}
defer dialer_rows.Close() ///закрываем коннект к Базе данных
for dialer_rows.Next() {
dialer_rows.Scan(&id_dispach)
}
data_rows , err := db.Query("SELECT interval_time_start,interval_time_end FROM dialer_golang WHERE client = $1 and state = 'called' ",client)
checkErr(err) ///функция обработки ошибок
defer data_rows.Close() ///закрываем коннект к Базе данных
for data_rows.Next() {
data_rows.Scan(&interval_time_start,&interval_time_end)
}
}
}
func main() {
//time.Sleep(300 * time.Millisecond) ///команда задержки sleep
// подключение к Базе данных
db_property := "host=" + DB_HOST + " user=" + DB_USER + " password=" + DB_PASSWORD + " dbname=" + DB_NAME + " sslmode=disable"
db, err = sql.Open("postgres", db_property) ///https://toster.ru/q/452264
err = db.Ping()
if err != nil {fmt.Println("Error: IS NOT Connect for " + DB_NAME + " Host: " + DB_HOST)} else {fmt.Println("Database " + DB_NAME + " Host: " + DB_HOST + " Connect is GOOD")} ///проверка на ошибку если вернет ошибку то выведет то что коннекта к бд нет
defer db.Close() ///закрываем коннект к Базе данных
sql_req() ///вызываю функцию без параметров
////вывожу текущее время которое есть в системе
current_time := time.Now().Format("15:04:05") ///Вывожу текущее время в нужном мне формате , так чтобы формат БД и формат вывода был единым
convert_time_start , err = time.Parse("15:04:05", interval_time_start) ///онвертирую значение в тип данный время чтобы потом корректно сравнить
convert_time_end , err = time.Parse("15:04:05", interval_time_end) ///онвертирую значение в тип данный время чтобы потом корректно сравнить
time_end := convert_time_end.Format("15:04:05")
time_start := convert_time_start.Format("15:04:05")
fmt.Println("Время",time_start,time_end,current_time)
////после того как получуили все необходимые данные для вызова необходимо сделать проверку попадает ли данное время в укаханный интервал
if time_start.Before(time_current) && time_end.After(time_current) {
fmt.Println("Мы попали в указанный интервал ")
} else {
fmt.Println("не попали в указанный интервал ")}
f, err := os.OpenFile("daemon_go.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
log.Fatal(err)
}
defer f.Close()
log.SetOutput(f)
log.Println("ID Клиента",id,"Номер клиента",client,"DISPACH",id_dispach,"Время начала обзвона ",convert_time_start,"Время окончания обзвона",convert_time_end,"Текущее время в формате Час Минута Секунда",current_time) ///////получил все переменные которые будут нужны для системы автообзвона
}
[[email protected] script]# go run daemon.go
Database freeswitch Host: 127.0.0.1 Connect is GOOD
Время 02:00:00 23:00:00 21:26:44
[[email protected] script]# go run daemon.go
# command-line-arguments
./daemon.go:80: time_start.Before undefined (type string has no field or method Before)
./daemon.go:80: undefined: time_current
./daemon.go:80: time_end.After undefined (type string has no field or method After)
./daemon.go:80: undefined: time_curren
Answer the question
In order to leave comments, you need to log in
time.Format() is a string.
And the string no longer has .Before() and .After()
If you need to check Before and After, then you need to do this BEFORE you turn the variable of type time.Time into a variable of type string.
It will probably be enough
current_time := time.Now()
time_start , err = time.Parse("15:04:05", interval_time_start)
time_end , err = time.Parse("15:04:05", interval_time_end)
if time_start.Before(time_current) && time_end.After(time_current) {
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question