获得两次之间的剩余时间

时间:2013-09-14 02:47:21

标签: sql-server date between

我有两次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;

2 个答案:

答案 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..."
}