73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
|
package lzUtils
|
|||
|
|
|||
|
import (
|
|||
|
"database/sql"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
// StringToNullString 将 string 转换为 sql.NullString
|
|||
|
func StringToNullString(s string) sql.NullString {
|
|||
|
return sql.NullString{
|
|||
|
String: s,
|
|||
|
Valid: s != "",
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// NullStringToString 将 sql.NullString 转换为 string
|
|||
|
func NullStringToString(ns sql.NullString) string {
|
|||
|
if ns.Valid {
|
|||
|
return ns.String
|
|||
|
}
|
|||
|
return ""
|
|||
|
}
|
|||
|
|
|||
|
// TimeToNullTime 将 time.Time 转换为 sql.NullTime
|
|||
|
func TimeToNullTime(t time.Time) sql.NullTime {
|
|||
|
return sql.NullTime{
|
|||
|
Time: t,
|
|||
|
Valid: !t.IsZero(), // 仅当 t 不是零值时才设置为有效
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// NullTimeToTime 将 sql.NullTime 转换为 time.Time
|
|||
|
func NullTimeToTime(nt sql.NullTime) time.Time {
|
|||
|
if nt.Valid {
|
|||
|
return nt.Time
|
|||
|
}
|
|||
|
return time.Time{} // 返回零值时间
|
|||
|
}
|
|||
|
|
|||
|
// Int64ToNullInt64 将 int64 转换为 sql.NullInt64
|
|||
|
func Int64ToNullInt64(i int64) sql.NullInt64 {
|
|||
|
return sql.NullInt64{
|
|||
|
Int64: i,
|
|||
|
Valid: i != 0, // 仅当 i 非零时才设置为有效
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// NullInt64ToInt64 将 sql.NullInt64 转换为 int64
|
|||
|
func NullInt64ToInt64(ni sql.NullInt64) int64 {
|
|||
|
if ni.Valid {
|
|||
|
return ni.Int64
|
|||
|
}
|
|||
|
return 0 // 返回零值 int64
|
|||
|
}
|
|||
|
|
|||
|
// Float64ToNullFloat64 将 float64 转换为 sql.NullFloat64
|
|||
|
// Valid 字段在 f 非零时设置为有效(注意:NaN 会被视为有效,需结合业务场景使用)
|
|||
|
func Float64ToNullFloat64(f float64) sql.NullFloat64 {
|
|||
|
return sql.NullFloat64{
|
|||
|
Float64: f,
|
|||
|
Valid: f != 0,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// NullFloat64ToFloat64 将 sql.NullFloat64 转换为 float64
|
|||
|
// 当 Valid 为 false 时,返回 float64 零值
|
|||
|
func NullFloat64ToFloat64(nf sql.NullFloat64) float64 {
|
|||
|
if nf.Valid {
|
|||
|
return nf.Float64
|
|||
|
}
|
|||
|
return 0.0
|
|||
|
}
|