使用SQL(Azure Sql) 我有许多包含日期时间值的记录,例如: 19-3-16上午9:25 19/3/16上午10:15
我需要所有这些都是今天的日期,但保留其时间部分。
我是C#程序员,所以我的SQL有点生疏。
所以伪代码类似于(假设requested_delivery_date是我需要更新的字段。
更新设置request_delivery_date = request_delivery_date.dateadd(7天)
因此,此后任何具有19年3月20日上午9:30的日期现在将变为19年3月27日上午9:30
答案 0 :(得分:1)
结合使用'queue' => true,
和DateAdd
:
DateDiff
结果:
DECLARE @Date As datetime = '2019-03-01T15:32:44'
SELECT @Date As Source,
GETDATE() As Today,
DATEADD(DAY, DATEDIFF(DAY, @Date, GETDATE()), @Date) As Result
要更新表中的列,您只需要编写一条更新语句:
Source Today Result
2019-03-01 15:32:44 2019-03-28 08:27:29 2019-03-28 15:32:44
答案 1 :(得分:1)
它看起来像一个简单的UPDATE
语句,它更新了YourTable
的所有行。
UPDATE YourTable
SET requested_delivery_date =
DATEADD(DAY, DATEDIFF(DAY, requested_delivery_date, GETDATE()), requested_delivery_date)
;
如果您要添加固定天数,则查询甚至更简单:
UPDATE YourTable
SET requested_delivery_date =
DATEADD(DAY, 7, requested_delivery_date)
;
答案 2 :(得分:0)
我尝试成功了。这是我的桌子。
startTime endTime
2019-03-28 15:55:10.690 2019-01-01 09:00:00.000
我的SQL语句:
UPDATE [MyDatabase].[dbo].[deom1] SET [endTime]=DATEADD(DAY, DATEDIFF(DAY, [endTime], GETDATE()), [endTime])
结果如下:
startTime endTime
2019-03-28 15:55:10.690 2019-03-28 09:00:00.000
有关更多详细信息,请参见DATEADD (Transact-SQL)。
希望这会有所帮助。