2016-10-11 35 views
-1

日期值的时候,我有以下值,需要硬编码的时间为一个新值:SQL - 怎样才能硬编码在SELECT语句

目前:

2016年10月11日06:00:00.000

新:

2016年10月11日21:00:00.000

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

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

+0

谢谢,我已经更新了这个问题。 –

+0

你想在今天的日期计算'21:00:00'吗? ('选择DateAdd(小时,21,Cast(Cast(GetDate()作为Date)作为DateTime))') – HABO

回答

0

我计算出来与以下语句:

CONVERT(日期时间,LEFT(CONVERT(nvarchar的(20),dateCreated会,20),10)+' 09: 00:00' ,120)AS DateCreatedHardCoded

分拆下:

  1. CONVERT将日期更改为格式为“yyyy-mm-dd hh:mi:ss”的NVARCHAR字符串
  2. LEFT获取转换后的字符串,并在距左侧10个字符时切断 - “2016-10 -11“
  3. CONVERT将2016-10-11 +硬编码值”09:00:00“的级联应用到”yyyy-mm-dd hh:mi:ss“的日期时间
  4. AS应用此导致新的领域 “DateCreatedHardCoded”
0
的硬编码值

您可以使用dateadd在datetime中添加小时。

E.g.

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

我建议这样的:

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

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

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