【发布时间】:2020-02-12 01:20:16
【问题描述】:
我需要将时间戳 23.59.59 放在我的日期列上。现在的格式是 yyyy-mm-dd。
【问题讨论】:
-
先加一天,再减一秒。
-
日期时间数据类型没有“格式”,它们是二进制值。如果你真的在存储一种格式,那么你所拥有的不是
date,而是varchar。
标签: sql sql-server date timestamp
我需要将时间戳 23.59.59 放在我的日期列上。现在的格式是 yyyy-mm-dd。
【问题讨论】:
date,而是varchar。
标签: sql sql-server date timestamp
评论太长了。
首先,“日期”列没有时间组件。所以你不能做你想做的事。如果您有 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 存储为日期没有时间组件。
【讨论】:
您可以更新列的日期,“DATE”是您的字段名称。
UPDATE TableXYZ SET
DATE=DATETIMEFROMPARTS(YEAR(DATE), MONTH(DATE), DAY(DATE), 23, 59, 59, 0)
WHERE ISDATE(DATE)=1
【讨论】: