的SQL Server:添加兩次在一起,並追加到給定的日期SQL服務器:添加兩次在一起,並追加到給定的日期
這裏startTime
是varchar
sd
手段的startDateed
表示結束日期
必需的新列有:
-
sd + startTime
例:2015-06-25 23:00
-
ed + (startTime + duration)
例:2015-08 -23 00:30
請注意時間cl早在這裏。
謝謝
的SQL Server:添加兩次在一起,並追加到給定的日期SQL服務器:添加兩次在一起,並追加到給定的日期
這裏startTime
是varchar
sd
手段的startDateed
表示結束日期必需的新列有:
sd + startTime
例:2015-06-25 23:00ed + (startTime + duration)
例:2015-08 -23 00:30請注意時間cl早在這裏。
謝謝
我認爲你需要像這樣: -
Set Nocount On;
Declare @sd Date
,@time Varchar(5)
,@ed Date
,@Duration Varchar(8)
Select @sd = '2015-06-09'
,@time = '23:00'
,@ed = '2015-08-22'
,@Duration = '01:30:00'
Select Cast(@time As Datetime) + Cast(@sd As Datetime) As startdate
,Cast(@ed As Datetime) + Cast(@time As Datetime) + Cast(@Duration As Datetime) As enddate
編輯: -
Set Nocount On;
If Object_Id('tempdb.dbo.#DateTimeTogather') Is Not Null
Begin
Drop Table #DateTimeTogather;
End
Create Table #DateTimeTogather
(
scheduleId Int Primary Key
,startTime Varchar(5)
,sd Date
,programId Int
,ed Date
,duration Time
)
Insert Into #DateTimeTogather(scheduleId,startTime,sd,programId,ed,duration) Values
(20,'23:00','2015-06-09',50,'2015-08-22','01:30:00')
,(21,'09:00','2015-06-07',29,'2015-08-22','00:45:00')
,(22,'14:00','2015-06-06',14,'2015-08-22','00:35:00')
,(23,'17:30','2015-06-13',7,'2015-06-13','00:45:00')
,(24,'19:00','2015-06-06',65,'2015-06-27','00:30:00')
,(25,'10:00','2015-06-06',81,'2015-06-17','04:12:00')
,(26,'17:00','2015-06-06',7,'2015-06-27','00:45:00')
,(27,'12:30','2015-06-06',7,'2015-06-27','00:45:00')
Select dt.scheduleId
,Cast(dt.sd As Datetime) + Cast(dt.startTime As Datetime) As startdate
,Cast(dt.ed As Datetime) + Cast(dt.startTime As Datetime) + Cast(dt.duration As Datetime) As enddate
From #DateTimeTogather As dt With (Nolock)
這給沒有錯誤
得到錯誤 '轉換失敗時,轉換日期和/或時間,從字符string.' –
需要每個列的數據類型,然後我可以告訴你一件事或指導你的東西 –
'聲明@sd日期 ,@時間VARCHAR(5) ,@ ed日期 ,@持續時間' –
好,因爲你是一個我不得不忽略的varchar數據類型並假設你的SD列讀dd-mmm-yyyy 00:00:00。如果它的SQL Server 2008+可以使用下面的代碼在午夜給出日期。
CONVERT(DATE,sd, 101)
畢竟日期和時間正確轉換下面的查詢應該這樣做:
SELECT (sd + starttime) as StartDatetime, (sd + startTime + duration) as EndDateTime
你要顯示它還是要在數據庫 –
來更新它,我需要這與選擇查詢@AmeyaDeshpande –
創建一個sqlfiddle –