2016-06-10 32 views
1

所以我的數據是1:30 PM.我想要有一個數據,當用戶選擇一個時間,我想它添加1小時30分到那,並使數據爲1:30 PM - 3:00 PM。我一直在尋找答案,並嘗試了一些解決方法,但我無法得到它。順便說一句我的時間的數據類型爲Varchar,因爲當我嘗試使用時間數據類型我從C#插入到SQL如何在SQL中添加時間?

+1

你或許應該修正的數據類型的情況第一能夠。 – Chris

回答

1
--this does a few things 
-- 1) converts the time stored as a varchar to the time datatype 
-- 2) adds 90 minutes 
-- 3) converts the time result back to the varchar datatype 

select convert(varchar(10), dateadd(mi, 90, convert(time, '1:30 PM')), 100) 


--this will show a final result of "3:00PM" 

編輯測試了一些問題:

以下查詢還將返回一個varchar,其間隔AM/PM之間的間隔。

select format(dateadd(mi, 90, convert(datetime, '1:30 PM')), 'h:mm tt') 

'h:mm tt'寫有一個 「H」,這樣它會顯示爲 「3:00 PM」,而不是 「03:00 PM」。

使用更換:

這將是我將如何,如果你使用replace去「3:00 PM」的目標

select replace(replace(convert(varchar(10), dateadd(mi, 90, convert(time, '1:30 PM')), 100), 'P', ' P'), 'A', ' A') 
+0

有沒有辦法讓我把這個空間放在3:00 PM之間 –

+0

@JCBorlagdan請看看編輯我的答案。 – tarheel

+0

先生我使用的SQL 2008不承認格式作爲功能,所以我嘗試使用替換,但它給了我結果Jan 1 1900 3:00 PM –

2

與SQL服務器2008

declare @t varchar(25) 

    set @t = '1:30 PM' 

    --conert a varchar to time 
    select CONVERT(time, @t) 

    --if you want to add 90 minutes to it 

    select DATEADD(minute,90,CONVERT(time, @t)) 
+0

輸出是13:30:00.0000000和15:00:00.0000000 –

+0

是的,因爲它現在是時間格式。只需做一個轉換(varchar,DATEADD(分鐘,90,CONVERT(time,@t)),options)選項列表,請點擊這裏。 https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/ – chungtinhlakho