2013-09-14 4 views
-1

У меня есть два раза Первый и последний ..Я нужен запрос, который показывает разницу во времени, и еслиПолучить время remaning Между два раза

GETDATE() = now 

, то он должен сказать, в прогресс. Например, если за день до этого он должен сказать «12 часов 10 минут слева», и если это происходит сейчас, он должен сказать «В процессе», и если он пройдет, тогда он должен указать «Проходы»

У меня есть попытки несколько запросов, но я не получаю желаемого результата.

SELECT 
    (DATEDIFF(dd, First_Half_Start, GETDATE())) - 
    (CASE WHEN DATEDIFF(dd,0,First_Half_Start) = 0 THEN 1 ELSE 0 END) 
FROM Match_Schedule; 
+0

Я использую MSSQL – Fahad

+0

Вы должны пометить вопрос как SQL-сервер, то –

ответ

1

Там нет функции, чтобы сделать это автоматически. Вы должны создать сообщение вручную.

SELECT @dates=(DATEDIFF(dd, First_Half_Start, GETDATE())), 
     @hours=(DATEDIFF(hour, First_Half_Start, GETDATE()))-(DATEDIFF(dd,  First_Half_Start, GETDATE()))*24, 
     @minutes=(DATEDIFF(minute, First_Half_Start, GETDATE()))-(DATEDIFF(hour, First_Half_Start, GETDATE()))*60, 
     @seconds=(DATEDIFF(second, First_Half_Start, GETDATE()))-(DATEDIFF(minute, First_Half_Start, GETDATE()))*60 
FROM Match_Schedule; 

IF ((@dates<0 or @hours<0 or @minutes<0 or @seconds<0) 
SET @status=CAST(ABS(@dates) AS VARCHAR)+' Days '+CAST(ABS(@hours) AS VARCHAR)+' hours '+CAST(ABS(@minutes) AS VARCHAR)+' minutes '+CAST(ABS(@seconds) AS VARCHAR)+' seconds left' 
ELSE 
SET @status='In Progress' 
+0

ну это, к сожалению, не работает .. и в любом случае это first_Half_stat shouls будет сопоставление с GetDate(), и если время даты между первым и matchend, то оно должно отображаться в процессе, иначе оно должно показать разницу b/w getdate и firstmatch .. – Fahad

0

Выглядит не просто для всех на стороне SQL Server.

но Вы можете расчитать разницу в seconds (так как это ваш точный).

SQL Server

SELECT 
    (DATEDIFF(ss, First_Half_Start, GETDATE())) AS seconds 
FROM Match_Schedule; 

Тогда на вашей стороне клиента, представляет это значение, как вы хотите.

что-то вроде:

Client

if (seconds > 0) { 
    // create new TimeStamp object depending your language 
    // make you sentence from this timestamp 
} else { 
    // show "in progress..." 
} 
+0

Спасибо ..но я не имею клиента side..I должны сделать это в хранимой процедуре и т.д .. Я не очень хорош в CASE, иначе я бы это сделал. – Fahad

+0

Итак, я считаю, что SQL Server не предоставляет никаких функций для управления этим. – mickro

Смежные вопросы