【问题标题】:Create DateTimeOffset 00:01 / 23:59 from given DateTimeOffset for same day从同一天给定的 DateTimeOffset 创建 DateTimeOffset 00:01 / 23:59
【发布时间】:2013-03-11 11:41:30
【问题描述】:

警告 - 前面的 TSQL 新手问题:

我有一个DateTimeOffset,比如2013-03-11 11:04:26.0000000 +00:00,我需要为同一天创建两个新日期,一个在 00:01,另一个在 23:59。

到目前为止,我已经用DATETIMEOFFSETFROMPARTSDATEPART 尝试了各种方法,但看起来有点尴尬 - 是否有一个简单的解决方案可以剪掉小时/分钟/等。并且只需使用日期替换两个必需的时间?

任何提示表示赞赏。

【问题讨论】:

  • 与其计算这样的奇数日期 - 如果它们是为了比较,最好更改比较操作(即人们经常尝试获取特定日期的“最后时刻”,而忽略事情可能发生在一天的最后一分钟(或秒)期间,因此 23:59 不包括此类事件)。第二天使用<,而不是<= 23:59 是更好的解决方案。
  • 不幸的是,我们应该创建这些日期时间来表示应用程序其他部分的时间窗口 - 根本不涉及比较......

标签: sql sql-server datetimeoffset


【解决方案1】:

你也可以试试这个选项

DECLARE @date datetimeoffset = '2013-03-11 11:04:26.0000000 +00:00'
SELECT DATEADD(day, DATEDIFF(day, 0 , @date), '00:01'), 
       DATEADD(day, DATEDIFF(day, 0 , @date), '23:59') 

--Results:2013-03-11 00:01:00.000   2013-03-11 23:59:00.000

【讨论】:

    【解决方案2】:

    知道了……

    select @pkgDate = CONVERT (date, @pkgDate)
    
    select DATEADD (minute, 1, @pkgDate)
    select DATEADD(hour, 23, DATEADD (minute, 59, @pkgDate))
    

    ..更好/更简洁的方法仍然值得赞赏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-11
      • 2013-12-06
      • 2021-02-08
      • 2020-04-20
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      相关资源
      最近更新 更多