1 changed files with 34 additions and 0 deletions
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
package utils |
||||
|
||||
import ( |
||||
"database/sql/driver" |
||||
"fmt" |
||||
"time" |
||||
) |
||||
|
||||
type NullTime struct { |
||||
Time time.Time |
||||
Valid bool // Valid is true if Time is not NULL
|
||||
} |
||||
|
||||
// Scan implements the Scanner interface.
|
||||
func (nt *NullTime) Scan(value interface{}) error { |
||||
nt.Time, nt.Valid = value.(time.Time) |
||||
return nil |
||||
} |
||||
|
||||
// Value implements the driver Valuer interface.
|
||||
func (nt NullTime) Value() (driver.Value, error) { |
||||
if !nt.Valid { |
||||
return nil, nil |
||||
} |
||||
return nt.Time, nil |
||||
} |
||||
|
||||
func (nt NullTime) MarshalJSON() ([]byte, error) { |
||||
if !nt.Valid { |
||||
return []byte("null"), nil |
||||
} |
||||
val := fmt.Sprintf("\"%s\"", nt.Time.Format(time.RFC3339)) |
||||
return []byte(val), nil |
||||
} |
Loading…
Reference in new issue