【问题标题】:Get timestamp 23:59:59 on my date column in T SQL在 T SQL 中的我的日期列上获取时间戳 23:59:59
【发布时间】:2020-02-12 01:20:16
【问题描述】:

我需要将时间戳 23.59.59 放在我的日期列上。现在的格式是 yyyy-mm-dd。

【问题讨论】:

  • 先加一天,再减一秒。
  • 日期时间数据类型没有“格式”,它们是二进制值。如果你真的在存储一种格式,那么你所拥有的不是date,而是varchar

标签: sql sql-server date timestamp


【解决方案1】:

评论太长了。

首先,“日期”列没有时间组件。所以你不能做你想做的事。如果您有 datetime 列,则可以构造值:

datetimefromparts(year(dt), month(dt), day(dt), 23, 59, 59, 0)

但是,不要这样做。这通常需要获得一天的“最后一刻”。相反,只需更改您对范围的定义,因此不包括结束日期。而不是:

where '2020-01-01' between date_start and date_end

使用:

where '2020-01-01' >= date_start and
      '2020-01-01' < date_end

并将date_end 存储为日期没有时间组件

【讨论】:

    【解决方案2】:

    您可以更新列的日期,“DATE”是您的字段名称。

    UPDATE TableXYZ SET 
    DATE=DATETIMEFROMPARTS(YEAR(DATE), MONTH(DATE), DAY(DATE), 23, 59, 59, 0)
    WHERE ISDATE(DATE)=1
    

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多