目标:
目标是使变量值为'2014-06-14 09:00:00.000'。
问题:
语法代码是作为动态对象创建的,如何将它从“2014-06-14 16:20:10.000”变为值'2014-06-14 09:00:00.000'?
DECLARE @a datetime = '2014-06-14 16:20:10.000'
信息:
*变量@a的值将一直在变化。重要的是“09:00:00.000”不可更改
*值“16:20:10.000'”可能会不时出现。
答案 0 :(得分:1)
select dateadd(hour, 9, cast(cast(@a as date) as datetime))
答案 1 :(得分:0)
写为:
-- to get desired result the base query should be like:
SELECT DATEADD(day, DATEDIFF(day,'19000101',@a), CAST('09:00:00.000' AS DATETIME2(7)))
-- and then you can convert it into any other desired format as:
SELECT CONVERT(VARCHAR(23),
DATEADD(day, DATEDIFF(day,'19000101',@a),
CAST('09:00:00.000' AS DATETIME2(7))),
121);
答案 2 :(得分:0)
尝试这样的事情:如果'09:00:00.000'
始终是常量而date part alone differs
DECLARE @a datetime = '2014-06-14 16:20:10.000'
select @a
SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10), @a, 112))+'09:00:00.000'
答案 3 :(得分:0)
试试这个:
DECLARE @a DATETIME = '2014-06-14 16:20:10.000'
SET @a = REPLACE(CONVERT(VARCHAR(10), @a, 102),'.','-') + ' 09:00:00.000'
SELECT @a