SQL - 如何在select语句中硬编码日期值的时间

时间:2016-10-11 00:38:59

标签: sql sql-server tsql

我有以下值,需要将时间硬编码为新值:

目前:

  

2016-10-11 06:00:00.000

新:

  

2016-10-11 21:00:00.000

由于系统限制,必须使用SELECT语句。

输入值可以是任何小时,分钟或秒(00:00:00至23:59:59),但输出值应始终为硬编码值21:00:00

5 个答案:

答案 0 :(得分:1)

select dateadd(HOUR, 15, '2016-10-11 06:00:00.000') as new, 
       TO_DATE('2016-10-11 06:00:00.000') AS current  

答案 1 :(得分:0)

您可以使用dateadd在日期时间中添加小时数。

E.g。

select dateadd(hh, 15, '2016-10-11 06:00:00.000'); -- output 2016-10-11 21:00:00.000

答案 2 :(得分:0)

我用下面的陈述想出来了:

  

CONVERT(datetime,LEFT(CONVERT(nvarchar(20),DateCreated,20),10)+'   09:00:00',120)AS DateCreatedHardCoded

细分:

  1. CONVERT将日期更改为NVARCHAR字符串,格式为" yyyy-mm-dd hh:mi:ss"
  2. LEFT获取转换后的字符串,一旦从左侧达到10个字符,就会切断 - " 2016-10-11"
  3. CONVERT应用2016-10-11的串联+硬编码值" 09:00:00"进入日期时间" yyyy-mm-dd hh:mi:ss"
  4. AS将此结果应用于新字段" DateCreatedHardCoded"

答案 3 :(得分:0)

我会建议:

select dateadd(hour, 21, cast(datecol as date))

cast(datecol as date)删除时间组件。然后,dateadd()会增加21个小时。

答案 4 :(得分:0)

select SUBSTRING(CAST(Currently AS varchar),0,11)+' 21:00:00.000' AS New from tableName