gpt4 book ai didi

javascript - Breeze查询不获取检查sql server表中日期列的记录

转载 作者:行者123 更新时间:2023-11-28 01:54:49 24 4
gpt4 key购买 nike

var shippedFromDt = new Date(2013, 09, 09);
var query = EntityQuery.from('Shipments')
.where(breeze.Predicate.create("ShipmentDate", ">=", shippedFromDt))
.orderByDesc("ID")

我在表中记录了发货日期为“10/9/2013”​​的记录。但是当我运行上面的查询时,我没有得到任何记录。如果我将日期更改为“10/8/2013”​​,查询将返回记录。我还使用 ">= 查询运算符 &,因此当输入日期为“10/9/2013”​​时,查询应返回数据。我不确定是否发生这种情况,因为 ShipedFromDt 还包含时间信息,因为表列仅存储日期。我尝试通过为小时、分钟和秒参数传递 0 值来创建日期对象,但这没有帮助。

Javascript月份索引从0开始,因此09用于十月。

最佳答案

这可能是时区问题。基本上,您在客户端上创建的任何日期都被定义为客户端浏览器的时区。相比之下,存储在数据库服务器上的日期,除非它们是 DateTimeOffset 或 DateTime2 数据类型,否则在定义时没有指定任何时区,因此可以被视为具有 0 的 UTC 偏移量(即 GMT)。因此,最好的办法是通过客户端时区偏移来调整客户端时间,将其转换为 GMT 时间;像这样的东西。 (我还没有检查下面的行,因此标志可能已关闭)。

var adjustedDate = new Date(yourDate.getTime() - (yourDate.getTimezoneOffset() * 60000));

A similar problem discussed on SO

另一种方法是将日期定义为带有“Z”说明符的字符串,以指示您希望日期为 UTC O 偏移量,然后将该字符串解析为日期。

最后一种方法是在数据库中使用 DateTime2 或 DateTimeOffset 数据类型,其中所有数据的时区偏移量与客户端上的时区偏移量相同。

关于javascript - Breeze查询不获取检查sql server表中日期列的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19275417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com