Comments (1)
I ended up writing a custom type based on gorm's Date.
package customtypes
import (
"cloud.google.com/go/civil"
"database/sql"
"database/sql/driver"
"time"
)
type Date civil.Date
func (date *Date) Scan(value interface{}) (err error) {
nullTime := &sql.NullTime{}
err = nullTime.Scan(value)
*date = Date(civil.DateOf(nullTime.Time))
return
}
func (date Date) Value() (driver.Value, error) {
return time.Date(date.Year, date.Month, date.Day, 0, 0, 0, 0, time.UTC), nil
}
// GormDataType gorm common data type
func (date Date) GormDataType() string {
return "date"
}
func (date Date) GobEncode() ([]byte, error) {
return civil.Date(date).In(time.UTC).GobEncode()
}
func (date *Date) GobDecode(b []byte) error {
var timeVal time.Time
err := timeVal.GobDecode(b)
if err != nil {
return err
}
dateVal := Date(civil.DateOf(timeVal))
*date = dateVal
return nil
}
func (date Date) MarshalJSON() ([]byte, error) {
marshalled := make([]byte, 0)
text, err := civil.Date(date).MarshalText()
marshalled = append(marshalled, byte('"'))
marshalled = append(marshalled, text...)
marshalled = append(marshalled, byte('"'))
return marshalled, err
}
func (date *Date) UnmarshalJSON(b []byte) error {
c := civil.Date{}
err := c.UnmarshalText(b[1 : len(b)-1])
*date = Date(c)
return err
}
from datatypes.
Related Issues (20)
- JSONSet support for PostgreSQL
- The JSON_SET feature is already supported and merged, any plans to release a new version?
- 数字数组查询不对劲 HOT 2
- 支持JSON_REMOVE
- Why can't find the function JSONArrayQuery definition? HOT 8
- Found in json.go, but unable to use
- Need Tag for latest PR HOT 2
- JSONType field Data: define a valid foreign key for relations or implement the Valuer/Scanner HOT 4
- Custom enum type sql
- v1.0.7 没有JsonSet功能?
- Please add the JSONArray support for sqlite, thx.
- Is there a solution that allows me to use gob encode / decode with data containing `JsonType` ?
- Greater/Lesser function for JSONQuery
- Add
- Add Enum type support for Postgres
- datatypes.JSONSlice not found HOT 2
- 希望可以支持一下JSONQuery("key").NotEquals(...)
- Potential security issue on Sqlite3 driver
- Getting issues while using JSONSlice for Postgres [] HOT 3
- Interval Type (ISO 8601)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from datatypes.