需求:假如当前时间是大于starttime且小于endtime的则按starttime倒序排列显示一条记录;假如当前时间小于starttime且小于endtime则按starttime正序排列显示一条记录。要在一次sql查询中完成。

====这个是论坛里面的,人家给出答案了,我只是学习的.算做个学习笔记,也许以后会用到。怕脑子坏了

 SELECT FROM_UNIXTIME( starttime, '%Y年%m月%d日 %H时%i分%s秒' ) AS starttime, FROM_UNIXTIME( endtime, '%Y年%m月%d日 %H时%i分%s秒' ) , if( starttime < UNIX_TIMESTAMP( ) , starttime - UNIX_TIMESTAMP( ) , (
starttime - UNIX_TIMESTAMP( ) ) +20000000
) AS t
FROM test
WHERE endtime > UNIX_TIMESTAMP( )
ORDER BY t ASC
LIMIT 0 , 30

  

if()函数就是实现这个的关键。
IF(expr1,expr2,expr3) 
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

为true
执行 starttime - UNIX_TIMESTAMP() 按得到的值asc排序这样就得到了“距离现在最近的starttime,也就是刚刚已经开始的”记录列表
为false
执行 (starttime - UNIX_TIMESTAMP())+20000000 
starttime - UNIX_TIMESTAMP()这样得到了 “starttime距离现在最近的,也就是马上将要到来的starttime”记录列表;由于 “未开始记录的”starttime - UNIX_TIMESTAMP() 得到的值可能小于“已开始记录的”starttime - UNIX_TIMESTAMP() 的值,这种情况下排序就混乱了,所以要加上一个很大的值20000000避免这种情况,这样就能保证未开始记录的starttime永远大于已开始记录的starttime值,这样未开始的值记录排在了已开始记录之后了。

转载于:https://www.cnblogs.com/xiangxiaodong/archive/2012/12/21/2828609.html

学习关于时间在sql里面的对比,用if语句(这个有点特别)相关推荐

  1. 第六课 大数据技术之Fink1.13的实战学习-Table Api和SQL

    第六课 大数据技术之Fink1.13的实战学习-Table Api和SQL 文章目录 第六课 大数据技术之Fink1.13的实战学习-Table Api和SQL 第一节 Fink SQL快速上手 1. ...

  2. Database之SQLSever:SQLSever数据库管理学习并深入理解SQL命令语句进阶综合篇《初级→中级→高级》(持续更新,建议收藏)

    Database之SQLSever:SQLSever数据库管理学习并深入理解SQL命令语句进阶综合篇<初级→中级→高级>(持续更新,建议收藏) 目录 SQLSever数据库管理学习并深入理 ...

  3. DL:深度学习框架Pytorch、 Tensorflow各种角度对比

    DL:深度学习框架Pytorch. Tensorflow各种角度对比 目录 先看两个框架实现同样功能的代码 1.Pytorch.Tensorflow代码比较 2.Tensorflow(数据即是代码,代 ...

  4. 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能

    [数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...

  5. (23) 基于深度学习框架的出租车OD需求预测应用对比

    交通预见未来(23): 基于深度学习框架的出租车OD需求预测应用对比 文章信息 前面看了 OD需求预测的文章,有一些相似之处,拿出来放到一起对比下. 一.<Contextualized Spat ...

  6. [网络安全学习篇55]:SQL自动化注入

    引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足:对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以 ...

  7. Python语言学习之时间那些事:python和时间的使用方法之详细攻略

    Python语言学习之时间那些事:python和时间的使用方法之详细攻略 目录 python和时间那些事 1.获取当前时间的几种方法 2.计算代码前后运行时间 python和时间那些事 1.获取当前时 ...

  8. oracle-关于时间的sql

    oracle-关于时间的sql 以下内容来源:http://www.cnblogs.com/hl3292/archive/2010/11/03/1868159.html 转换的格式: 表示 year ...

  9. MySQL学习笔记02【SQL基本概念与通用语法、数据库的CRUD操作】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

最新文章

  1. 支持者基于BCH提出众多新概念,推动BCH创新
  2. linux命令之awk命令
  3. PAT甲级1125 Chain the Ropes:[C++题解]贪心、优先队列、合并果子
  4. Linux DNS服务配置与管理详解
  5. The Digits String
  6. 解决报错:java.util.UnknownFormatConversionException: Conversion = ‘p‘
  7. 教育大数据隐私保护机制与技术研究
  8. 暴怒程序员的呐喊:别让我做那些没用的东西
  9. java泛型与c 泛型,Java泛型代码编译与javac,失败与Eclipse Helios
  10. tyvj1194 划分大理石
  11. 谁说80后的人不负责任!
  12. 圆满结束,一睹各位大神风采
  13. git add多个文件_10个节省时间和改善工作流的Git技巧
  14. 【unity】Vector3.AngleCrossDot
  15. serialVersionUID作用
  16. Weblogic安装部署步骤
  17. 树莓派开发—语音识别功能
  18. meta标签是什么,通常包含哪些内容?
  19. 如何让iPhone桌面简洁又不俗气?
  20. 部分图像压缩技术的优缺点以及应用

热门文章

  1. 代码,绘画,设计常用的颜色名称-16进制HEX编码-RGB编码 对照一览表
  2. 机器学习--机器学习的分类
  3. 64位Ubunu 16.04系统安装最新版本的wine 4.0
  4. 玩转u-boot之【初探环境变量env/bootcmd/bootargs】
  5. jupyter notebook 主题
  6. 5g与edge ai_使用OpenVINO部署AI Edge应用
  7. 揭穿现金贷的真实面目
  8. 网站搭建从零开始(三)域名解析
  9. python谱聚类算法_谱聚类(spectral clustering)原理总结
  10. python 滑块验证码_python selenium 淘宝滑块验证码 问题