49 lines
996 B
Go
49 lines
996 B
Go
package clause
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
type Database string
|
|
|
|
var (
|
|
Postgres Database = "postgres"
|
|
Sqlite Database = "sqlite"
|
|
Mysql Database = "mysql"
|
|
SqlServer Database = "sqlserver"
|
|
)
|
|
|
|
type Function interface {
|
|
GetSql() string
|
|
}
|
|
|
|
type FuncDateWithoutTime struct {
|
|
Database Database
|
|
Field string
|
|
Alias string
|
|
SQL string
|
|
}
|
|
|
|
func (fnc FuncDateWithoutTime) GetSql() string {
|
|
alias := fnc.Alias
|
|
if fnc.Alias == "" {
|
|
alias = fnc.Field
|
|
}
|
|
switch fnc.Database {
|
|
case Postgres:
|
|
fnc.SQL = fmt.Sprintf(" to_char(%s, %s) as %s", fnc.Field, "'YYYY-MM-DD'", alias)
|
|
case Sqlite:
|
|
fnc.SQL = fmt.Sprintf(" strftime(%s, %s) as %s", "'%Y-%m-%d' ", fnc.Field, alias)
|
|
case Mysql:
|
|
fnc.SQL = fmt.Sprintf(" DATE_FORMAT(%s, %s) as %s", fnc.Field, "'%Y-%m-%d' ", alias)
|
|
case SqlServer:
|
|
fnc.SQL = fmt.Sprintf(" FORMAT(%s, %s) as %s", fnc.Field, "'yyyy-MM-dd' ", alias)
|
|
default:
|
|
log.Print("database not implemented yet for this function")
|
|
return ""
|
|
}
|
|
|
|
return fnc.SQL
|
|
}
|