• SQL SERVER查询时间条件式写法


     

    如下表:

    tid    tname     tdate
        1      张三      2009-10-29 19:04:50
        2      李四      2006-11-12 11:04:50
        3      王五      2007-6-11
        4      陈六      2007-8-26 12:04:50
        5      小二      2009-11-28

    下面开始做各种时间查询:注意:避免在WHERE条件式中对字段做运算,比如convert(char(10),tdate,120)

    select tname from tt Where tdate='2007-06-11' --当时间段值为2007-06-11 00:00:00.000时,此条件式成立

    --select tname 时间值没有 from tt Where tdate='2007-08-26' --时间段值为2007-08-26 12:04:50.000,此条件式不成立,时间值不同,这样找不到当天值
        select tname 查找当天时间 from tt Where tdate between '2007-08-26 00:00:00' and '2007-08-26 23:59:59'
        --select tname 今天的值 from tt Where tdate =getdate() --不行,因为SQL会默认当天起点是00:00:00开始,

    select tname 今天的值方式一 from tt Where tdate between convert(char(10),getdate(),120) and convert(char(10),getdate(),120)+' 23:59:59'
        select tname 今天的值方式二 from tt Where tdate >= convert(char(10),getdate(),120) and tdate<convert(char(10),getdate()+1,120)

    --select tname from tt Where left(tdate,10)='2007-06-11' --

    --select tname from tt Where convert(char(10),tdate,120)='2007-06-11' --查找当天值,可以用,但效率低

    --select tname aa from tt Where convert(char(10),tdate,120)='2007-08-26' --查找当天值,可以用,但如果条件式后面为‘2007-8-26’则不行.因为char(10)限定十位

    --select tname 时间 from tt Where tdate Like '2007-08-26%' --不可用,找不到记录
        --select tname 时间段 from tt Where tdate between '2007-06-11' and '2007-09-12'

    查找时间段也是一样的,如:

    select tname 查找2007年6月11号到8月26的记录 From tt Where tdate >='2007-06-11' and tdate<= '2007-08-26 23:59:59'
     

    以上就是SQL SERVER查询时间条件式写法。

  • 相关阅读:
    【转】EDK简单使用流程(3)
    【转】应用 printf 语句格式化输出字符
    【转】[FPGA博客大赛](updated)在xilinx的FPGA系统中scanf函数的使用
    BZOJ 1083 [SCOI2005]繁忙的都市
    BZOJ 2821 分块统计
    BZOJ 1034 [ZJOI2008]泡泡堂BNB
    BZOJ 1029 [JSOI2007]建筑抢修
    BZOJ 1096 [ZJOI2007]仓库建设
    BZOJ 1070 [SCOI2007]修车
    BZOJ 1040 [ZJOI2008]骑士
  • 原文地址:https://www.cnblogs.com/xiaohui1990/p/3418550.html
Copyright © 2020-2023  润新知