首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我怎样才能得到某一天的最后一个可能的时间?

我怎样才能得到某一天的最后一个可能的时间?
EN

Stack Overflow用户
提问于 2018-07-18 04:01:02
回答 2查看 0关注 0票数 0

我试图实现某一天的最后一个可能的时间,例如在2008-01-23 00:00:00.000的日期,我需要2008-01-23 23:59:59.999,也许使用日期字段的dateadd函数?

EN

回答 2

Stack Overflow用户

发布于 2018-07-18 12:34:15

答案是SELECT DATEADD(ms, -3, '2008-01-24'),解释如下。

来自Marc的博客

但是等等,Marc ......你说你喜欢使用BETWEEN,但是那个查询没有...那是因为BETWEEN 是包容性的,这意味着它包含了终点。如果我订的是下个月第一天午夜到期的订单,那么它将包括在内。那么如何在期末获得适当的价值呢?这肯定不是通过使用日期部分来组装一个(但是你必须记住它是23:59:59.997作为最大时间......不要忘记毫秒)。为了做到这一点,我们使用Microsoft SQL Server DATETIME最多的乱码知识3毫秒的分辨率(这是不会改变的)。所以我们所做的就是从上面给出的任何一个句末期公式中减去3毫秒。例如,昨天(当地时间)的最后一个可能时刻是: SELECT DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd, 0, GetDate()), 0)) 因此,要将本月到期的订单作为BETWEEN查询,您可以使用: SELECT [ID] FROM [dbo].[Orders] WHERE [ShipDue] BETWEEN DATEADD(mm, DATEDIFF(mm, 0, GetUTCDate()), 0) AND DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, GetUTCDate()) + 1, 0)) 请记住,始终确保你做数学题对输入参数,列,或者你会杀了特区政府的查询,这意味着可能已被使用没有索引的-Ability。

票数 0
EN

Stack Overflow用户

发布于 2018-07-18 13:33:08

代码语言:txt
复制
SELECT DATEADD(ms, -2, DATEADD(dd, 1, DATEDIFF(dd, 0, GetDate())))

我以为你一开始有.。我会把这个留在这里以防其他人碰到这个。

代码语言:txt
复制
DateTime now = DateTime.Now;
DateTime endofDay = now.Date.AddDays(1).AddMilliseconds(-1);

你可以用你想找出的任何一天替换“现在”变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档