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 是否会自动进行转换或生成错误。
这种类型的逻辑通常在应用程序级别完成。
我有一个带有时间戳列的 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 是否会自动进行转换或生成错误。
这种类型的逻辑通常在应用程序级别完成。