MSACCESS: SELECT "How many days ago" {can return: 今天, 昨天, 2 天前, ...}, field1, field2, fieldN FROM mytable

MSACCESS: SELECT "How many days ago" {can return: today, yesterday, 2 days ago, ...}, field1, field2, fieldN FROM mytable

我有一个带有时间戳列的 table,我想执行一个 SELECT return 这个列,以一种友好的方式表达它发生在多少天前,像 "Today"、"Yesterday"、“2 天前”、“3 天前”...

我无法处理目标数据,因此我的查询必须 return 最后一个字符串。

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

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

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

您可以使用 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 是否会自动进行转换或生成错误。

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