Sql MSACCESS:选择";多少天前;{可以返回:今天,昨天,2天前,…},mytable中的field1,field2,fieldN

Sql MSACCESS:选择";多少天前;{可以返回:今天,昨天,2天前,…},mytable中的field1,field2,fieldN,sql,vba,ms-access,stored-procedures,Sql,Vba,Ms Access,Stored Procedures,我有一个带有时间戳列的表,希望执行一个SELECT,以友好的方式返回该列,表示它发生了多少天,如“今天”、“昨天”、“2天前”、“3天前” 我无法处理目标上的数据,因此我的查询必须返回最终字符串 我已经在使用DateDiff(“d”,timestamp,Date())来确定表示的整数,但我需要转换为相应的字符串 我已经成功地构建了一个helper表,比如[intDays(PK)、strDays]和internaljoining,但是这样我需要预先填充所有需要的值。我正在寻找一种更通用的解决方案,

我有一个带有时间戳列的表,希望执行一个SELECT,以友好的方式返回该列,表示它发生了多少天,如“今天”、“昨天”、“2天前”、“3天前”

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

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

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

您可以使用
iif()

注意:最后一个表达式可能需要是
cstr(DateDiff(“d”,timestamp,Date())&“days ago”
。我不确定MS Access是否会自动进行转换,或者如果其中一个参数不是字符串,是否会生成错误


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

嗨,戈登,你的解决方案帮我省了不少钱。我非常感谢。而且,MS Access没有抱怨将整数与字符串连接在一起。
If DateDifference = 0 Then return "Today"
If DateDifference = 1 Then return "Yesterday"
return DateDifference & " days ago"
select iif(DateDiff("d", timestamp, Date()) = 0, "Today",
           iif(DateDiff("d", timestamp, Date()) = 1, "Yesterday",
               DateDiff("d", timestamp, Date()) & " days ago"
              )
          )