仅替换日期部分

时间:2016-10-17 08:00:36

标签: sql-server date

这个问题可能是重复的抱歉,因为我无法在网上找到任何解决方案,所以发布此

我需要创建一个SQL服务器函数,我只需要替换实际日期的日期部分。

例如,如果实际日期为01/10/2016,则表示我需要将实际日期更新为15/10/2016日期部分单独从01更换为15我需要实现此目的,请帮我解决这是SQL SERVER的新手

4 个答案:

答案 0 :(得分:2)

DECLARE @actual_due_date INT = 5;
DECLARE @invoice_date DATETIME = '20161210';
DECLARE @due_date DATETIME;

SET @due_date=DATEADD(DAY,@actual_due_date-DATEPART(DAY,@invoice_date),@invoice_date);

SELECT @due_date;

打印出来

2016-12-05 00:00:00.000

答案 1 :(得分:0)

不知道你真正想要实现的目标,但你可以试试这个:

DECLARE  @OtherDate DATETIME = {ts'2016-02-05 12:00:00'}; --Some day in February, 12 o'clock

DECLARE @actualDate DATETIME = GETDATE(); --current day and time


--This comes back with the other date, but the actual time
SELECT CAST(CAST(@OtherDate AS date) AS datetime) + CAST(CAST(@actualDate AS time) AS datetime);

答案 2 :(得分:0)

不确定目的,为什么要更换它。

这是一种方式:

Declare @date date = '01/10/2016'

Select Replace(Convert(varchar(20), @date, 101), '01/', '15/') AS ReplacedDate
-- 15/10/2016

答案 3 :(得分:0)

以下是另一种方法:

DECLARE @oldDate DATETIME = '2016-10-17 10:29:22'
DECLARE @replacingDate DATE = '2016-10-15'
DECLARE @newDate DATETIME
SET @newDate = CONVERT(datetime, CONVERT(varchar, @replacingDate)+' '+ LEFT(CONVERT(varchar, CONVERT(time, @oldDate)), 8))
SELECT @newDate

--UPDATE TableA
--SET FieldX = CONVERT(datetime, CONVERT(varchar, @replacingDate)+' '+ LEFT(CONVERT(varchar, CONVERT(time, @oldDate)), 8))
--WHERE SomeCondition