更改没有生效日期的时间戳

问题描述 投票:0回答:3

我正在使用SSMS,并且我在表中存储了日期/时间。我需要做的是更改时间,但要保留日期。

例如:2020-07-28 00:00:00。我需要将时间戳00:00:00更改为23:59:00,而不更改整个列的日期。

CPRDate -- Column Header
2020-07-28 00:00:00
2020-01-01 00:00:00
2017-01-01 00:00:00
sql sql-server date
3个回答
1
投票

您可以将它们一起添加为datetime

select cprdate + convert(datetime, convert(time, '23:59:00'))

如果要更改存储的值,可以在update中使用相同的构造。

如果cprdatedate,则需要将其转换为datetime才能起作用。


0
投票

您可以减去一分钟再增加一天来实现这一目标,即

update MYTABLE SET CPRDate = DATEADD(day, 1, DATEADD(minute, -1, CPRDATE));

这里是SQL Fiddle 以显示其正常工作。


0
投票

您可以将convert()的值添加到date,以损失小时(分钟,秒,...)部分,convert()将其返回到datetime,然后添加所需的小时(分钟,秒, ...)部分。

SELECT convert(datetime, convert(date, cprdate)) + convert(datetime, convert(time, '23:59:00'))
       FROM elbat;

db<>fiddle

© www.soinside.com 2019 - 2024. All rights reserved.