关于SQL中Between语句查询日期的问题

在CSDN找到了相同的问题描述和解决方法:

问题:

我的表某个字段是Datetime型 以" YYYY-MM-DD 00:00:00" 存放

A 2009-01-22 21:22:22
B 2009-01-22 19:21:11
C 2009-01-22 23:10:22
现在用 select * from TABLE where date between ‘2009-1-22‘ And ‘2009-1-22‘ 想查日期为2009-1-22的记录 结果查不到
有什么办法吗

解决:

   1: create table tb(id varchar(1),riqi datetime)   2: insert into tb values(‘A‘ , ‘2009-01-22 21:22:22‘)    3: insert into tb values(‘B‘ , ‘2009-01-22 19:21:11‘)    4: insert into tb values(‘C‘ , ‘2009-01-22 23:10:22‘)   5: go   6: --1   7: select * from tb where convert(varchar(10),riqi,120) = ‘2009-01-22‘     8: /*   9: id   riqi                                                     10: ---- ------------------------------------------------------   11: A    2009-01-22 21:22:22.000  12: B    2009-01-22 19:21:11.000  13: C    2009-01-22 23:10:22.000  14:   15: (所影响的行数为 3 行)  16: */  17:    18: --2  19: select * from tb where riqi between ‘2009-01-22 00:00:00‘ and ‘2009-01-22 23:59:59‘    20: /*  21: id   riqi                                                     22: ---- ------------------------------------------------------   23: A    2009-01-22 21:22:22.000  24: B    2009-01-22 19:21:11.000  25: C    2009-01-22 23:10:22.000  26:   27: (所影响的行数为 3 行)  28: */  29:    30: drop table tb 

总结:

短日期类型默认Time为 00:00:00,所以当使用between作限制条件时,就相当于between ‘2009-1-22 00:00:00‘  and ‘2009-1-22 00:00:00‘,因此就查不出数据。要想实现功能,那就使用连接字串的形式,在短日期后面把时间补全,那样就能实现功能了。

我的代码:

   1: date1 between ‘" + dateTimePicker1.Value.ToShortDateString() + " 00:00:00‘ and ‘" + dateTimePicker2.Value.ToShortDateString() + " 23:59:59‘
时间: 2024-08-03 13:04:15

关于SQL中Between语句查询日期的问题的相关文章

使用sql语句查询日期在一定时间内的数据

使用sql语句查询日期在一周内的数据 select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0   //查询当天日期在一周年的数据 select * from ShopOrder where datediff(day,ordTime,getdate()-1)=0   //查询当天的所有数据 SELECT * FROM A where datediff(d,datetime,getdate()) <=30 //前30天 S

SQL 数据库T-SQL语句查询

         SQL 数据库T-SQL语句查询 附加数据库的数据文件 查询表中种类是水果的出厂日期在201-04-01之后的 查询所有种类的总成本 以倒序的方式查询表中水果的成本 查询种类是蔬菜的并且价格在1-5之间 将product表中的名称,种类,出厂日期的数据保存在另一个名为product_new的表中,并查看 在products表和sales表中查询产品的名称.种类.成本.销售地点和销售价格. 在products表和sales表中查询销往海南的产品名称.种类.成本和销售价格. 查询年

SQL中常见语句

SQL中常见语句笔记: --替换字段中的回车符和换行符 UPDATE [dbo].[MGoods_Test] SET GoodsName = REPLACE(GoodsName, CHAR(13) + CHAR(10), '') --删除表命令 DROP TABLE [dbo].[MGoods_Test] --删除表中数据命令 DELETE FROM [dbo].[MGoods_Test] --逐行删除 有日志记录 TRUNCATE TABLE [dbo].[MGoods_Test] --TRU

使用正则表达式实现像SQL中LIKE语句中的%和_通配

在项目中我们经常遇到将数据库的数据取到后再次进行筛选过滤的情况.LINQ to Entity提供了统一的查询接口并且可以高效的完成工作,但是对于我们常在SQL中使用的%和_这样的通配符并没有支持.我们只能通过String.Contains方法来实现简单的通配.使用String.Contains方法是无法达到在查询串中使用通配符的目的的.正则表达式虽然晦涩难懂,但功能十分强大,解决个统配符绰绰有余. 代码如下:     public static class LINQHelper     {   

SQL中多条件查询括号的用途

界面: 代码 select id,routeName,routeCharacteristic,routeIntroductions,costDetail,participate,click,routeCategory,dineMenu,weather,isEnable,addPerson,addDate,competitiveProducts,luxury,onVacation,characteristic,hotRecommend,referencesPrice,specialPreferen

SQL 中 NOT IN 查询不到数据

一.问题 用以下sql语句查询数据,结果为空 SELECT a.ID , a.Sub_Project_Name , a.Sub_Project_Type FROM TB_KYSubProject a WHERE a.ID NOT IN ( SELECT DISTINCT c.SubprojectID FROM TB_KYGrogramme c WHERE ISNULL(c.Belong_Programme, '') <> '' AND c.Belong_Programme IN ( SELEC

ORA-03113 SQL中select语句全表扫描带来的异常

今天在ERP系统的维护过程中,业务人员反馈了一个问题过来,是ERP系统生产单模块的预览打印报表出错,看到后我逐步做了以下的排查: 1.尝试其他单据是否存在相同问题 2.直接打开水晶报表,将参数代入看看是否是报表问题 排查之后逐渐发现,问题出在数据源身上,找到返回数据集的存储过程,进入测试窗口检查是否运行正常,结果发现运行即进入卡死状态,进程无法中断,只好强行退出PL/SQL,这时候我估计到问题出在SQL语句上,因此将SQL语句复制到新的窗口,代入参数,如下: SELECT WO_NBR,WO_L

SQL中的子查询

目录 WHERE子查询 HAVING子查询 FROM子查询 SELECT子查询 EXISIT子查询 查询薪资排名的员工信息(面试) z子查询就是将一个查询(子查询)的结果作为另一个查询(主查询)的数据来源或判断条件的查询.常见的子查询有WHERE子查询,HAVING子查询,FROM子查询,SELECT子查询,EXISTS子查询,子查询要使用小括号(): WHERE子查询 在WHERE子句中进行使用查询 SELECT * FROM EMP WHERE SAL < (SELECT AVG(SAL)

使用SQL语句查询日期(当月天数,当月第一天,当月最后一天,本年最后一天,当月第一个星期) 日期转字符串

取某月天数:select day(dateadd(month,1,'2012-02-01')-1) --当月天数 select day(dateadd(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate())+1,0))) ---当月第一天 select dateadd(d,-day(getdate())+1,getdate()) ---当月最后一天 select dateadd(d,-1,dateadd(m,1,dateadd(d,-day(getdate())+1,g