Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да анализирате времето от базата данни

Ако приемем, че използвате go-sql-driver/mysql можете да помолите драйвера да сканира автоматично DATE и DATETIME до time.Time , като добавите parseTime=true към вашия низ за връзка.

Вижте https://github.com/go-sql-driver/mysql# поддръжка на време и време

Примерен код:

db, err := sql.Open("mysql", "root:@/?parseTime=true")
if err != nil {
    panic(err.Error()) // Just for example purpose. You should use proper error handling instead of panic
}
defer db.Close()

var myTime time.Time
rows, err := db.Query("SELECT current_timestamp()")

if rows.Next() {
    if err = rows.Scan(&myTime); err != nil {
        panic(err)
    }
}

fmt.Println(myTime)

Забележете, че това работи с current_timestamp но не и с current_time . Ако трябва да използвате current_time ще трябва да извършите анализа сами.

Ето как правите персонализиран синтактичен анализ:

Първо, ние дефинираме персонализиран тип обвиване []байт, който автоматично ще анализира стойностите за време:

type rawTime []byte

func (t rawTime) Time() (time.Time, error) {
    return time.Parse("15:04:05", string(t))
}

И в кода за сканиране просто правим това:

var myTime rawTime
rows, err := db.Query("SELECT current_time()")

if rows.Next() {
    if err = rows.Scan(&myTime); err != nil {
        panic(err)
    }
}

fmt.Println(myTime.Time())



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да избера подобни редове в две различни таблици в MySQL (възможно ли е?)

  2. utf8_bin срещу utf_unicode_ci

  3. Инсталиране на MySQL Python на Mac OS X

  4. Писане на сложна MySQL заявка

  5. Намиране на прекъсване на ред и връщане на карета (\r\n) в MySQL