【问题标题】:MSACCESS: SELECT "How many days ago" {can return: today, yesterday, 2 days ago, ...}, field1, field2, fieldN FROM mytableMSACCESS: SELECT "How many days ago" {可以返回:今天,昨天,2天前,...},field1,field2,fieldN FROM mytable
【发布时间】:2015-06-12 01:58:06
【问题描述】:

我有一个带有时间戳列的表,并且想要执行一个 SELECT,它以一种友好的方式返回该列,表示它发生在多少天前,例如“今天”、“昨天”、“2 天前”, “3 天前”...

我无法处理目的地数据,所以我的查询必须返回最终字符串。

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

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

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

【问题讨论】:

    标签: sql vba ms-access stored-procedures


    【解决方案1】:

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

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

    【讨论】:

    • 嗨,戈登,您的解决方案拯救了我的一天。非常感谢。
    • 另外,MS Access 并没有抱怨将整数与字符串连接起来。
    猜你喜欢
    • 2015-01-19
    • 2016-05-28
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 2016-01-27
    相关资源
    最近更新 更多