我有一个带有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"
答案 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是自动执行转换,还是在其中一个参数不是字符串时生成错误。
这种类型的逻辑通常在应用程序级别完成。