使用CASE檢查是否應該使用小時零件。
查詢
DECLARE @Hours AS INT
DECLARE @SubtractDate AS DATETIME
SET @Hours=24/* User input to have hours */
SET @SubtractDate=DATEADD(hh,@Hours,GETDATE()) - GETDATE()
if @Hours>=24
SELECT
CONVERT(VARCHAR(10),DATEDIFF(DAY,'1900-01-01',@SubtractDate))+ ' Day(s) ' +
+
CASE
WHEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) > 0
THEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) + ' Hour(s)'
ELSE ''
END
AS [Result]
Else
SELECT
CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate))+ ' Hour(s) '
AS [Result]
結果集@時間= 24
| Result |
|-----------|
| 1 Day(s) |
結果集@小時= 25
| Result |
|--------------------|
| 1 Day(s) 1 Hour(s) |
結果SET @小時= 48
| Result |
|-----------|
| 2 Day(s) |
編輯:輸出格式化
查詢
DECLARE @Hours AS INT
DECLARE @SubtractDate AS DATETIME
SET @Hours=1/* User input to have hours */
SET @SubtractDate=DATEADD(hh,@Hours,GETDATE()) - GETDATE()
if @Hours>=24
SELECT
CASE
WHEN CONVERT(VARCHAR(10),DATEDIFF(DAY,'1900-01-01',@SubtractDate)) = 1
THEN CONVERT(VARCHAR(10),DATEDIFF(DAY,'1900-01-01',@SubtractDate))+ ' Day '
WHEN CONVERT(VARCHAR(10),DATEDIFF(DAY,'1900-01-01',@SubtractDate)) >= 2
THEN CONVERT(VARCHAR(10),DATEDIFF(DAY,'1900-01-01',@SubtractDate))+ ' Days '
END
+
CASE
WHEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) > 0
THEN CASE
WHEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) = 1
THEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) + ' Hour'
WHEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) >= 2
THEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) + ' Hours'
END
ELSE ''
END
AS [Result]
Else
SELECT
CASE
WHEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) > 0
THEN CASE
WHEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) = 1
THEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) + ' Hour'
WHEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) >= 2
THEN CONVERT(VARCHAR(10),DATEPART(hh,@SubtractDate)) + ' Hours'
END
ELSE ''
END
AS [Result]
結果集@小時= 1
| Result |
|--------|
| 1 Hour |
結果集@小時= 2
| Result |
|---------|
| 2 Hours |
結果集@時間= 24
| Result |
|--------|
| 1 Day |
結果集@小時= 25
| Result |
|--------------------|
| 1 Day 1 Hour |
結果集@小時數= 26
| Result |
|---------------|
| 1 Day 2 Hours |
結果集@小時= 48
| Result |
|-----------|
| 2 Days |
(1)編輯你的問題,並提供樣本數據,預期的效果,和你想要什麼解釋。 (2)確定你正在使用的數據庫。該代碼不是MySQl代碼。 –
....這段代碼最可能是SQL-server SQL。SQL-server支持函數DATEADD,DATEGET,DATEDIFF和DATEPART,並按照你的方式和用法聲明用戶變量。 –
當輸入:SET @ Hours = 24/*用戶輸入有小時* /期望的結果將是:1天,而不是現在它顯示:1天0小時........ ..............................另外:輸入時:SET @ Hours = 48/*用戶輸入有小時* /期望結果將是:2天,而現在它顯示:2天0小時 – neer0097