Sql server 获得两次之间的还押时间

Sql server 获得两次之间的还押时间,sql-server,date,between,Sql Server,Date,Between,我有两次第一次和最后一次..我需要一个显示时差的查询,如果 GETDATE() = now 那么应该说是在进行中。比如,如果是前一天,那么应该说“还剩12小时10分钟”,如果是现在,那么应该说“正在进行”,如果已经通过,那么应该说“通过” 我尝试了一些查询,但没有得到期望的结果 SELECT (DATEDIFF(dd, First_Half_Start, GETDATE())) - (CASE WHEN DATEDIFF(dd,0,First_Half_Start) = 0 T

我有两次第一次和最后一次..我需要一个显示时差的查询,如果

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;

在SQL Server端完成所有工作看起来并不容易

但是,您可以在
内计算差异(因为这是您的精确值)

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

没有自动执行的功能。您必须手动生成消息

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'
SELECT@dates=(DATEDIFF(dd,First\u Half\u Start,GETDATE()),
@小时=(DATEDIFF(小时,前半部分开始,GETDATE())-(DATEDIFF(dd,前半部分开始,GETDATE())*24,
@分钟=(DATEDIFF(分钟,前半部分开始,GETDATE())-(DATEDIFF(小时,前半部分开始,GETDATE())*60,
@秒=(DATEDIFF(秒,前半部分开始,GETDATE())-(DATEDIFF(分钟,前半部分开始,GETDATE())*60
来自Match_时间表;

如果((@dates您应该将问题标记为sql server,然后谢谢..但我没有客户端..我必须在存储过程中执行此操作,等等..我不擅长以其他方式执行此操作。因此我相信sql server不提供任何管理此操作的功能。很遗憾,这不起作用..不管怎样,前半部分的统计应该是使用GetDate()进行映射,如果日期时间在第一个和matchend之间,则应显示正在进行中,否则应显示与GetDate和firstmatch之间的差异。。