MSACCESS:SELECT"多少天前" {可以返回:今天,昨天,2天前,...},field1,field2,fieldN FROM mytable

时间:2015-04-07 12:52:58

标签: sql vba ms-access stored-procedures

我有一个带有timestamp列的表,并希望以友好的方式执行一个SELECT返回此列,表示它发生了多少天,例如“Today”,“Yesterday”,“2 days ago”, “3天前”......

我无法处理目标数据,因此我的查询必须返回最终字符串。

我已经使用DateDiff(“d”,timestamp,Date())来确定一个表示的整数,但我需要转换为相应的字符串。

我已经成功构建了一个像[intDays(PK),strDays]和内部连接这样的辅助表,但是这样我需要预先填充所需的所有值。我正在寻找一种更通用的解决方案,它遵循条件逻辑输出正确的字符串,如:(伪代码)

If DateDifference = 0 Then return "Today"
If DateDifference = 1 Then return "Yesterday"
return DateDifference & " days ago"

1 个答案:

答案 0 :(得分:2)

您可以使用iif()

select iif(DateDiff("d", timestamp, Date()) = 0, "Today",
           iif(DateDiff("d", timestamp, Date()) = 1, "Yesterday",
               DateDiff("d", timestamp, Date()) & " days ago"
              )
          )

注意:最后一个表达式可能需要cstr(DateDiff("d", timestamp, Date())) & " days ago"。我不确定MS Access是自动执行转换,还是在其中一个参数不是字符串时生成错误。

这种类型的逻辑通常在应用程序级别完成。