sql里面如何设置查询的时间范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql里面如何设置查询的时间范围相关的知识,希望对你有一定的参考价值。

我的SQL里面有一个“离岗时间”字段,我现在想设置条件“离岗时间”为2005年10月30日以前的,where语句应该怎么写?还有就是想要查询“离岗时间”为2005年1月日到2005年10月30日这段时间的,where语句应该怎么写?

where 离岗时间<#2005/10/30# 这样写好象不对

对 SQL SERVER 数据库
----------------------------
SELECT * FROM 表名 WHERE 离岗时间<'2005-10-30'

SELECT * FROM 表名 WHERE 离岗时间 BETWEEN '2005-1-1' AND '2005-10-30'
------------------------------------

对 ACCESS
----------------------------
SELECT * FROM 表名 WHERE 离岗时间<#2005-10-30#

SELECT * FROM 表名 WHERE 离岗时间 BETWEEN #2005-1-1# AND #2005-10-30#
参考技术A 在日期的查询表示上,如果是ACCESS数据库,日期的两头应该加上#,而在SQL数据库中日期的两头只需要加上单引号即可。 参考技术B SELECT * FROM 表名 WHERE 离岗时间<'20051030' 参考技术C where year(离岗时间)=2005 month(离岗时间)=10 day(month)=30

这样应该可以吧..以前写过.记不起了

sql 查询时间、日期范围内的数据

有一个表data,里面有两列,一列是时间年月日,例如2012-3-4,一列是日期时分秒,例如09:12:23,怎么查询一个时间日期范围内的数据?例如2012年1月1日 7点之后到2012年1月4日10点之前(2012-1-1 07:00:00 到2012-1-4 10:00:00)的数据?
请给出sql语句,数据库是access数据库

select * from table
where CDate(Format(年月日,"yyyy-mm-dd")+时分秒)>CDate('2012-01-01 19:00:00')
and CDate(Format(年月日,"yyyy-mm-dd")+时分秒)<CDate('2012-01-04 10:00:00')
参考技术A SELECT * 
FROM TableName   
WHERE CONVERT(DATETIME,CONVERT(VARCHAR,日期列) + ' ' +CONVERT(VARCHAR,时间列)) BETWEEN '2012-1-1 07:00:00' AND '2012-1-4 10:00:00'

参考技术B SELECT * FROM TABLE_NAME
WHERE
(COL_1
BETWEEN Format(COL_1, "yyyy-mm-dd")
AND Format(COL_1, "yyyy-mm-dd")
)
AND (COL_2
BETWEEN Format(COL_2, "hh24:mi:ss")
AND Format(COL_2, "hh24:mi:ss")
)
建议将这两个列合并吧,鸡肋
参考技术C 不知道你的是什么数据库?

如果是oralce的话, 可以拼接两个字段.
select * from data where to_date(to_char(nyr, 'yyyy-mm-dd') || ' ' || to_char(sfm, 'hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss') between to_date('2012-01-01 07:00:00', 'yyyy-mm-dd hh24:mi:ss') and to_date('2012-01-04 10:00:00', 'yyyy-mm-dd hh24:mi:ss')

没有看到是access的数据库, 呵呵, 抱歉哈. 给这样的一个思路吧.

以上是关于sql里面如何设置查询的时间范围的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询时间、日期范围内的数据

SQL语句怎样查询一个范围

sql语句 在一定的时间范围内 连续3天考试都满足 60分 如何写

如何改进 SQL 中不同时间范围的聚合查询

SQL如何编写返回缺失日期范围的查询?

如何在 Laravel 7 中使用原始 SQL 查询创建范围?