2017-05-26 51 views
-3

我有一个表,它的行保留在到和从日期格式。它从某一天保留到另一天。一旦预订完成,就会生成票证编号。在C#中的往返日期计算#

现在我的要求是,我需要将任务分类为活动和历史。历史必须是,ticketId的TO日期必须比昨天早。活跃的TO日期必须大于昨天,直到任何一天。

我该如何做到这一点?我很难解决这个问题。并从迄今保存在如下格式的SQL表:

From:2017-05-04  TO:2017-05-18 
+4

在[所以]你应该尝试**自己写代码**。后** [做更多的研究](//meta.stackoverflow.com/questions/261592)**如果你有问题,你可以**发布你已经尝试**与清楚的解释是什么是'工作**并提供[** Minimal,Complete和Verifiable示例**](// stackoverflow.com/help/mcve)。我建议阅读[问]一个好问题和[完美问题](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要参加[游览]并阅读[this](// meta.stackoverflow.com/questions/347937/)**。 –

+0

如果日期列实际上是日期类型,则它们不具有任何格式。他们是日期。当然你知道如何将日期与< and >进行比较? –

+0

提供示例记录和代码来更好地说明您的问题 – Snympi

回答

0

它会工作,我认为...尝试并恢复

Select (case when cast(convert(varchar(10),[ReserveToDate],101) as date)>cast(convert(varchar(10),dateadd(d,-1,getdate()),101) as date) then 'Active' else 'Historical' end) as Status,* from Table 

,如果你只想显示则历史ticketid

Select ticketid from Table where 
cast(convert(varchar(10),[ReserveToDate],101) as date)<=cast(convert(varchar(10),dateadd(d,-1,getdate()),101) as date) 
+0

错误的语法附近到 – user3660473

+0

现在尝试....和评论 – Ravi

+2

绝对没有理由将日期转换为字符串并返回日期。这只会引入转换问题*和*阻止服务器使用任何索引。如果有人想忽略时间元素,一个简单的'cast(somefield as date)'将起作用而不会影响性能 –