tydata-server/pkg/lzkit/lzUtils/sqlutls.go

73 lines
1.6 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}