aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/query/engine/function_helpers.go20
1 files changed, 8 insertions, 12 deletions
diff --git a/weed/query/engine/function_helpers.go b/weed/query/engine/function_helpers.go
index 60eccdd37..50f71dc08 100644
--- a/weed/query/engine/function_helpers.go
+++ b/weed/query/engine/function_helpers.go
@@ -102,22 +102,18 @@ func (e *SQLEngine) valueToTime(value *schema_pb.Value) (time.Time, error) {
case *schema_pb.Value_StringValue:
// Try to parse various date/time string formats
dateFormats := []struct {
- format string
- useLocal bool
+ format string
+ tz *time.Location
}{
- {"2006-01-02 15:04:05", true}, // Local time assumed for non-timezone formats
- {"2006-01-02T15:04:05Z", false}, // UTC format
- {"2006-01-02T15:04:05", true}, // Local time assumed
- {"2006-01-02", true}, // Local time assumed for date only
- {"15:04:05", true}, // Local time assumed for time only
+ {"2006-01-02 15:04:05", time.Local}, // Local time assumed for non-timezone formats
+ {"2006-01-02T15:04:05Z", time.UTC}, // UTC format
+ {"2006-01-02T15:04:05", time.Local}, // Local time assumed
+ {"2006-01-02", time.Local}, // Local time assumed for date only
+ {"15:04:05", time.Local}, // Local time assumed for time only
}
for _, formatSpec := range dateFormats {
- if t, err := time.Parse(formatSpec.format, v.StringValue); err == nil {
- if formatSpec.useLocal {
- // Convert to UTC for consistency if no timezone was specified
- return time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), time.UTC), nil
- }
+ if t, err := time.ParseInLocation(formatSpec.format, v.StringValue, formatSpec.tz); err == nil {
return t, nil
}
}