• 【SQL】对于日期DATETIME的条件筛选


    sql查询时间大于某天的数据
    如查询时间大于2020/05/14这一天的数据,首先可能想到这样写

    select * from STUDENT where TIME>'2020/05/14'
    

    但这种方式写出来,查询的结果还是会有5/14当天的,原因是实际上,在解读这语句时会翻译成TIME>'2020/05/14 00:00:00'也就是说,比如14号的12点也是满足的。
    所以写的时候最好的写法,应该是

    select * from STUDENT where TIME>DATEADD(SECOND, -1, '2020/05/15')
    

    对于MySQL应该这样写

    select * from STUDENT where TIME>DATE_ADD('2020/05/15', INTERVAL -1 SECOND)
    

    这意思就是说TIME>'2020/05/14 23:59:59'

    DATEADD(datepart, number, date)

    • datepart
      指的是修改的类型,一般有YEAR,MONTH,DAY,HOUR,MINUTE,SECOND
      分别对应的就是YEAR/MONTH/DAY HOUR:MINUTE:SECOND
      更详细的可看W3school
    • number
      修改的值,正数是未来的日子。负数是过去的日子
    • date
      合法日期表达式

    当然对于我遇到的情况,还有一种方式,但是不严谨的解决方案

    select * from STUDENT where TIME>DATEADD(DAY,1,'2020/05/14')
    

    MySQL语句

    select * from STUDENT where TIME>DATE_ADD('2020/05/14', INTERVAL 1 DAY)
    

    这种方式也可以查到,但没有排除当刚好有条记录是'2020/05/15 00:00:00'就查不到了,当然如果你觉得你记录不可能有这么巧有这个时间的,也可以用。这可以比较方便的使用到这个时间字符串而不做其他修改。

    如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

    如果您想转载本博客,请注明出处

    如果您对本文有意见或者建议,欢迎留言

    感谢您的阅读,请关注我的后续博客

  • 相关阅读:
    python中用exit退出程序
    习题5-2 使用函数求奇数和 (15分)
    习题5-1 符号函数 (10分)
    练习5-3 数字金字塔 (15分)
    练习5-2 找两个数中最大者 (10分)
    练习5-1 求m到n之和 (10分)
    ubuntu使用教程
    图解HTTP 上
    Sublime Text 3 插件
    两千行PHP学习笔记
  • 原文地址:https://www.cnblogs.com/AlinaL/p/12896374.html
Copyright © 2020-2023  润新知