我有两次First和Last ..我需要一个显示时差的查询以及
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 :(得分: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'
答案 1 :(得分:0)
在SQL Server端看起来并不容易。
但您可以在seconds
中计算差异(因为这是您准确的)。
SQL Server
SELECT
(DATEDIFF(ss, First_Half_Start, GETDATE())) AS seconds
FROM Match_Schedule;
然后在您的客户端,根据需要显示此值。
类似的东西:
<强>客户端强>
if (seconds > 0) {
// create new TimeStamp object depending your language
// make you sentence from this timestamp
} else {
// show "in progress..."
}