小编gur*_*kan的帖子

如何为 MongoDB 关闭 UTC 时区

由于MongoDB 默认以 UTC 存储时间,因此我将下面的扩展用于 MongoDB 日期字段

    public static class DateTimeExtensions {
    
        public static DateTime AdjustUtcDiffByOffset(this DateTime time) {
            return time.AddHours(DateTimeOffset.Now.Offset.Hours);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
尽管我在应用程序级别尝试了一些方法,例如 .NET 中的属性或序列化方法,但它们都会导致不同的问题。我现在决定在 .NET 中使用这个扩展,但我认为这也不是一个完整和准确的解决方案。

在数据库级别上是否有针对此问题的解决方案,而无需通过调整或其他方式依赖编程语言?

编辑

我认为我应该在下面的评论后进行更多解释。如上所示,我已经知道 MongoDB 以 UTC 格式存储在这篇文章中链接的时间。这可能很有用,但我的应用程序中不需要任何 UTC 时区差异,而且我不想单独处理每种编程语言的表示层。而且,我什至不希望在其他层中只需要一个额外的行或函数,因为除了基本逻辑或业务之外。

让我的架构承担这个。我很懒惰,生命真的很短,鸟儿在外面飞:) 我不希望不同的字段像不必要的字符串转换一样。由于我在应用程序中进行了很多时间计算,因此我需要在数据库中使用日期时间类型。

我现在使用 .NET,因此使用MongoDB .NET 驱动程序。我尝试了不同的序列化方法,但它在数据访问架构中引起了另一个问题。总之,我可以在我的另一个应用程序中使用 UTC,但我现在不想要它,我更喜欢在分配给 field 时使用本地时间。我决定特别为 C# 使用下面的封装。

    private DateTime _startTime;
    public DateTime StartTime {
        get => _startTime;
        set => _startTime = new DateTime(value.Ticks, DateTimeKind.Utc);
    }
Run Code Online (Sandbox Code Playgroud)

c# datetime utc mongodb

5
推荐指数
0
解决办法
1469
查看次数

如果它有值,我应该如何使用可空类型

我有我的模型:

[DataType(DataType.Date)]
public DateTime? Date1 { get; set; }

[DataType(DataType.Date)]
public DateTime? Date2 { get; set; }

[DataType(DataType.Date)]
public DateTime? Date3 { get; set; }
Run Code Online (Sandbox Code Playgroud)

Data1 到 Data3 很重要 DateTime?

我的问题:

//Return right value
(model.Date1.ToString().AsDateTime().ToShortDateString() != "01.01.0001" ? model.Date1.ToString().AsDateTime().ToShortDateString() : "Is not known")
//Return bad value
(model.Date2.ToString().AsDateTime().ToShortDateString() != "01.01.0001" ? model.Date1.ToString().AsDateTime().ToShortDateString() : "Není známo")
//Return bad value
(model.Date3.ToString().AsDateTime().ToShortDateString() != "01.01.0001" ? model.Date3.ToString().AsDateTime().ToShortDateString() : "Is not known")
Run Code Online (Sandbox Code Playgroud)

我不知道如何或为何但是输入是相同的,但Date2Date3返回错误的值...

谢谢你的帮助

c# nullable

3
推荐指数
1
解决办法
155
查看次数

语法错误:应为“(”或“,”或关键字 SELECT,但已到达脚本结尾

我只是按照课程中的查询进行操作,但我无法弄清楚为什么收到错误消息。

语法错误:应为“(”或“,”或关键字 SELECT,但在 [13:6] 处结束脚本

With 
longest_used_bike AS (
    SELECT 
        Bikeid,
        SUM(duration_minutes) AS trip_duration
    FROM 
        bigquery-public-data.austin_bikeshare.bikeshare_trips
    GROUP BY 
        Bikeid
    ORDER BY 
        Trip_duration DESC
    LIMIT 1
)
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误?

sql common-table-expression google-bigquery

1
推荐指数
1
解决办法
3万
查看次数