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

需求:假如当前时间是大于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ruby中的回调方法和钩子方法

在ruby中&#xff0c;当某些特定的事件发生时&#xff0c;将调用回调方法和钩子方法。事件有如下几种&#xff1a; 调用一个不存在的对象方法类混含一个模块定义类的子类给类添加一个实例方法给对象添加一个单例方法引用一个不存在的常量对以上的事件&#xff0c;都可以为之编写…

超简单的JNI——NDK开发教程

不好意思各位&#xff0c;我按照网上一些教程进行JNI开发&#xff0c;折腾了半天也没成功&#xff0c;最后自己瞎搞搞定了&#xff0c;其实超简单的&#xff0c;网上的教程应该过时了&#xff0c;最新版的AS就包含了NDK编译的功能&#xff0c;完全不用手动javah&#xff0c;各种…

查询工资最低的3名员工的职工工号、姓名和收入_关于工资条,这6个常识必须掌握,事关你的权益!...

大状说&#xff1a;找大状&#xff0c;中小企业自己的法律顾问。今天为大家带来的文章&#xff0c;是《关于工资条&#xff0c;这6个常识必须掌握&#xff0c;事关你的权益&#xff01;》&#xff0c;是关于劳动法的内容&#xff0c;希望能给大家带来帮助。1、单位不发工资条的…

oracle查对象创建时间,oracle:查询某个时间之后,指定用户,指定对象类型,并创建的表的个数...

SQL> select COUNT(*) from dba_objects where created< to_date(17-01-14,dd-mm-yy) AND owner用户名 and object_typeTABLE;查询某个时间之后创建的表有哪些&#xff1a;SQL> select object_name,created from dba_objects where created> to_date(17-01-14,dd-…

年末跳槽

末日过了&#xff0c;大家都在准备着年会&#xff0c;年总结&#xff0c;年终奖。 而我却在烦着跳槽的事。 由于一个偶遇的机会&#xff0c;最近面试了公司B&#xff0c;面试过程还可以&#xff0c;跟公司B的技术管理人谈得还挺开心的。他也同意我的技术。 开始的时候&#xff…

SQL之用户自定义函数

关于SQL Server用户自定义的函数&#xff0c;有标量函数、表值函数&#xff08;内联表值函数、多语句表值函数&#xff09;两种。 题外话&#xff0c;可能有部分朋友不知道SQL Serve用户自定义的函数应该是写在哪里&#xff0c;这里简单提示一下&#xff0c;在Microsoft SQL Se…

hdoj3351-stack

Problem DescriptionI’m out of stories. For years I’ve been writing stories, some rather silly, just to make simple problems look difficult and complex problems look easy. But, alas, not for this one.You’re given a non empty string made in its entirety f…

vb语言程序设计_如果编程语言难度决定头发浓度,学这语言的可能要光头了

对于程序员来说&#xff0c;头发真的比什么都重要&#xff0c;甚至很多程序员&#xff0c;大量的人民币都花在了后续植发上。甚至网上还流行这么一句话&#xff0c;你发际线越高&#xff0c;编程能力越高&#xff0c;那对于程序员来说&#xff0c;那么多语言&#xff0c;到底哪…

oracle同义词很慢,通过问题长知识----ORACLE同义词

现象&#xff1a;create table JBPM_JOB时出错&#xff0c;提示name is used by existing object而drop table 的时候&#xff0c;却报table or view does not exist.这是一个很矛盾的现象。排查&#xff1a;select * from user_objects where OBJECT_NAME ‘JBPM_JOB’—注意字…

C#获取程序集的版本号和最后编译时间

C#获取程序集的版本号&#xff1a;string ver System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); C#中如何将记录项目的最后编译时间&#xff1a;在实际的软件开发工作中&#xff0c;我们通常需要记录某个工程的最后编译时间&#xff0c;原来…

无刷新上传Excel后利用JQuery AJAX 显示进度条的实现方式

1、前台上传页面代码 <div class"clearfix mywebsite-nodata"><div id"show"><form action"<?site_url(user/upload)?>" target"ifmupload" id"myform" method"post" accept-charset"…

怎么理解python语言_Python语言入门1-理解Python语言

本文主要向大家介绍了Python语言入门的理解Python语言&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习Python语言入门有所帮助。python是解释型的脚本语言解释型语言与C/C等编译型语言相比&#xff0c;python语言的程序并不是首先编译成二进制机器码后运行&am…

SD Card Formatter for Mac Download

https://www.sdcard.org/downloads/formatter_4/eula_mac/ SDFormatter Mac版是一款Mac OS平台上的sd卡修复工具&#xff0c;SDFormatter是一款比较好用的SD卡格式化工具&#xff0c;能够格式化SD存储卡和SDHC记忆Card&#xff08;SD/SDHC 存储卡&#xff09;&#xff0c;使用遵…

linux删除用户oracle用户名,linux添加用户useradd 删除用户userdel

1.作用useradd或adduser命令用来建立用户帐号和创建用户的起始目录&#xff0c;使用权限是超级用户。2.格式useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name3.主要参数-c&#xff1a;加上备注文字&#xff0c…

Asp.net创建伪静态页面

下面是我研究了好几天和同事一起才研究出来的&#xff0c;原创。 1伪静态的定义&#xff1a; 伪静态是相对真实静态来讲的&#xff0c;通常我们为了增强搜索引擎的友好面&#xff0c;都将文章内容生成静态页面&#xff0c;但是有的朋友为了实时的显示一些信息。或者还想运用动态…

Spring 管理Bean(获取Bean,初始化bean事件,自动匹配ByName······等)

1.实例化spring容器 和 从容器获取Bean对象 实例化Spring容器常用的两种方式&#xff1a; 方法一: 在类路径下寻找配置文件来实例化容器 [推荐使用] ApplicationContext ctx new ClassPathXmlApplicationContext(new String[]{"beans.xml"}); 方法二: 在文件系统路径…

directoryinfo 读取 映射磁盘_LoaRunner性能测试系统学习教程:磁盘监控(5)

上期我们讲到LoaRunner性能测试内存监控&#xff0c;这期我们讲LoaRunner性能测试磁盘监控。磁盘监控在介绍磁盘监控前&#xff0c;先介绍固定磁盘存储管理的性能&#xff0c;固定磁盘存储器的结构层次如图所示。每个单独的磁盘驱动器称为一个物理卷&#xff08;PV&#xff09;…

Eclipse新建web项目正常启动tomcat不报错,但不能访问项目的解决方法

原因: 虽然我手动添加了自己下载的tomcat,但是由于在Eclipse中创建Server时&#xff0c;“Server Locations”选项采用的时默认配置&#xff0c;即"Use workspace metadata(does not modify tomcat installation ),这意味着该Server不会改变TOMCAT的安装及部署目录&#…

oracle10g执行insert,oracle 10g 增强审计。表insert 及bind values

oracle 10g之前&#xff0c;可以审计对表的操作&#xff0c;但不能记录操作时的各个列的值。在10g中&#xff0c;已经可以审核并监控到具体的sql语句及内容了。要求10g以后的版本。alter system set audit_traildb_extended scopespfile;[more]示例&#xff1b;SQL> show us…

点击按钮 变换图片

<html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>变换图片</title><script type"text/javascript">function chan…