如何根据条件从db获取时间

时间:2012-06-03 15:35:39

标签: mysql sql

我有一个表格,其值为

             Table_hello
date                            col2
2012-01-31 23:01:01             a
2012-06-2  12:01:01             b
2012-06-3  20:01:01             c

现在我要选择日期

  1. 如果是3天之前的日子或更少
  2. 如果是24小时之前的小时或更少
  3. 如果是60分钟或更短的话,只需几分钟
  4. 如果是60秒或更短
  5. ,则以秒为单位
  6. 如果是在3天或更长时间之前以简单格式
  7. 输出

    for row1 2012-01-31 23:01:01 
    for row2 1 day ago 
    for row3 1 hour ago 
    

    UPDATE 我的SQL查询

      select case 
                when TIMESTAMPDIFF(SECOND, `date`,current_timestamp) <= 60 
                then concat(TIMESTAMPDIFF(SECOND, `date`,current_timestamp), ' seconds')
                when TIMESTAMPDIFF(DAY, `date`,current_timestamp) <= 3 
                then concat(TIMESTAMPDIFF(DAY, `date`,current_timestamp), ' days')end
                when TIMESTAMPDIFF(HOUR, `date`,current_timestamp) <= 60 
                then concat(TIMESTAMPDIFF(HOUR, `date`,current_timestamp), ' hours')
                when TIMESTAMPDIFF(MINUTE, `date`,current_timestamp) <= 60 
                then concat(TIMESTAMPDIFF(MINUTE, `date`,current_timestamp), ' minutes')
    
    from table_hello
    

    唯一的问题是我无法在sql中使用break和default,例如c ++中的switch case

1 个答案:

答案 0 :(得分:1)

使用timestampdiff功能和CASE

select case 
        when TIMESTAMPDIFF(SECOND, `date`,current_timestamp) <= 60 
        then concat(TIMESTAMPDIFF(SECOND, `date`,current_timestamp), ' seconds')
        when TIMESTAMPDIFF(DAY, `date`,current_timestamp) <= 3 
        and TIMESTAMPDIFF(DAY, `date`,current_timestamp) >= 1 
        ...
       end as time_diff 
from Table_hello
where TIMESTAMPDIFF(DAY, `time`,current_timestamp) >= 3