这个问题可能是重复的抱歉,因为我无法在网上找到任何解决方案,所以发布此
我需要创建一个SQL服务器函数,我只需要替换实际日期的日期部分。
例如,如果实际日期为01/10/2016
,则表示我需要将实际日期更新为15/10/2016
日期部分单独从01更换为15我需要实现此目的,请帮我解决这是SQL SERVER的新手
答案 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