当前位置:  开发笔记 > 编程语言 > 正文

我如何获得特定日期的最后可能时间

如何解决《我如何获得特定日期的最后可能时间》经验,为你挑选了3个好方法。

我正在努力实现某一天的最后可能时间,例如2008-01-23 00:00:00.000的日期我需要2008-01-23 23:59:59.999或许可以通过使用日期上的dateadd函数领域?



1> bdukes..:

答案是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.



2> Shaun Bowe..:
SELECT DATEADD(ms, -2, DATEADD(dd, 1, DATEDIFF(dd, 0, GetDate())))

我以为你最初有c#..我会把它留在这里以防万一其他人偶然发现这个.

DateTime now = DateTime.Now;
DateTime endofDay = now.Date.AddDays(1).AddMilliseconds(-1);

你可以用你试图找出的任何一天替换'now'变量



3> Joel Coehoor..:

添加-1 毫秒开始的的下一个日(DATEADD甚至支持纳秒,如果你想获得真正的罚款).

但很可能你只想在比较中使用这个值,在这种情况下它甚至更简单.

而不是像这样的东西:

AND @CompareDate <= [LastTimeforThatday]

或这个:

@compareDate BETWEEN [StartDate] AND [LastTimeforThatday]

像这样做:

AND @CompareDate < [BeginningOfNextDay]

或这个:

AND (@CompareDate >= [StartDate] AND @CompareDate < [BeginningOfNextDay])

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有