2016-10-11 56 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