数据库的日期区间查询方法。

我有个access数据库,数据库的格式像图片中所示。现在需要针对“TestTime”列表进行日期的查询。输入的日期格式是才用两个文本输入框,限定输入的日期格式为MM/DD... 我有个access数据库,数据库的格式像图片中所示。现在需要针对“TestTime”列表进行日期的查询。 输入的日期格式是才用两个文本输入框,限定输入的日期格式为MM/DD/YYYY形式,但是access里面的testtime列的信息并不是完全的这种日期形式,还包含其他的星期和时间信息,见下图。请问如何实现日期的区间查询?
这里我将起始日期和结束日期分别赋值给了date_from和date_to变量。
下面的代码是用来检查起始和结束日期的合法性,但是接下去该怎么写查询语句?只需要SQL的命令。。。请大家帮帮忙。

Date_from_Check:If Not ((date_from = "" Or date_from = "MM/DD/YYYY") And (date_to = "" Or date_to = "MM/DD/YYYY")) Then If Val(Mid(date_from, 1, 2)) >= 1 And Val(Mid(date_from, 1, 2)) <= 12 Then If Val(Mid(date_from, 4, 5)) >= 1 And Val(Mid(date_from, 4, 5)) <= 31 Then If Val(Mid(date_from, 7, 10)) >= 2010 And Val(Mid(date_from, 7, 10)) <= 2020 Then GoTo Date_to_check Else MsgBox "From Date inputed not aviable!", vbOKOnly, "Error:" End If Else MsgBox "From Date inputed not aviable!", vbOKOnly, "Error:" End If Else MsgBox "From Date inputed not aviable!", vbOKOnly, "Error:" Exit Sub End If
Date_to_check: If Val(Mid(date_to, 1, 2)) >= 1 And Val(Mid(date_to, 1, 2)) <= 12 Then If Val(Mid(date_to, 4, 5)) >= 1 And Val(Mid(date_to, 4, 5)) <= 31 Then If Val(Mid(date_to, 7, 10)) >= 2010 And Val(Mid(date_to, 7, 10)) <= 2020 Then GoTo Send_SQL Else MsgBox "To Date inputed not aviable!", vbOKOnly, "Error:" End If Else MsgBox "To Date inputed not aviable!", vbOKOnly, "Error:" End If Else MsgBox "To Date inputed not aviable!", vbOKOnly, "Error:" Exit Sub End If
If date_from > date_to Then MsgBox "From Date must be earlier or equal to From Date.", vbOKOnly, "Error:" Exit Sub End If

这里需要添加查询语句。我采用的是ADO方式,请问sql查询语句应该怎么写?
也就是说 select * from 表名 where [TestTime] ????????? (问号应该怎么设置填写?)
End If
我用的是VB6.0开发软件。
展开
 我来答
博学小赵爱生活
高能答主

2019-06-06 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:456 获赞数:111857

向TA提问 私信TA
展开全部

access中有个mid函数,可以用来截取字符串或者日期。

select * from 表名 where mid([TestTime],5,10) ='04/19/2013'其中,5代表截取的开始位置,从左数,10代表截取的长度。

数据库的日期区间查询有两种情况: 

1:查询给定时间在开始时间列与结束时间列范围中数据; 

2:查询日期列在开始时间列与结束时间列范围中数据。

第一种:<,>, <= , >=

select * from 表名 where 日期列 >= to_date('2015-10-20 00:00:00','yyyy-mm-dd hh24:mi:ss') 

and t.日期列 <= to_date('2015-10-20 23:59:59','yyyy-mm-dd hh24:mi:ss')。

第二种 between and

select * from 表名 where 日期列 between to_date('2015-10-20 00:00:00','yyyy-mm-dd 

hh24:mi:ss')and to_date('2015-10-20 23:59:59','yyyy-mm-dd hh24:mi:ss')。

扩展资料:

SQL数据库语句:

创建数据库:

CREATE DATABASE database-name。

删除数据库:

drop database dbname。

创建新表:

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)。

删除新表:

drop table tabname。

增加一个列:

Alter table tabname add column col type。

添加主键:

Alter table tabname add primary key(col)。

删除主键:

Alter table tabname drop primary key(col)。

创建索引:

create [unique] index idxname on tabname(col….)。

删除索引:

drop index idxname。

创建视图:

create view viewname as select statement。

删除视图:

drop view viewname。

参考资料来源:百度百科-sql语句大全



59分粑粑分享生活
高粉答主

2020-01-07 · 专注生活好物分享,解答日常方方面面的问题
59分粑粑分享生活
采纳数:326 获赞数:119806

向TA提问 私信TA
展开全部

有两种方式:to_char方式和to_date方式。

假设要查询2011-05-02到2011-05-30之间的数据,实现方式如下:

1、to_date方式:

select * from tablename where time>=to_date('2011-05-02','yyyy-mm-dd') and time <= 

to_date('2011-05-30','yyyy-mm-dd');

运行的结果是:可以显示05-02的数据,但是不能显示05-30的数据。

运行的结果是:可以显示05-02的数据,但是不能显示05-30的数据。

所以可以得出结论:

(1)如果想显示05-30的数据可以to_date('2011-05-31','yyyy-mm-dd'),这样就能显示30号的了。

(2)如果想要显示05-30的数据可以to_date('2011-05-30 23:59:59 999','yyyy-mm-dd hh24:mi:ss')也是可以查出来的。

2、to_char方式:

同样查询上面两个日期

select * from tablename where to_char(time,'yyyy-mm-dd')>=2011-05-02 and 

to_char(time,'yyyy-mm-dd')<=2011-05-3;

查询结果:可以同时显示05-02和05-30的数据。

另外:可以用between and 代替 >=符号。

扩展资料:

SQL数据库语句:

创建数据库:

CREATE DATABASE database-name。

删除数据库:

drop database dbname。

创建新表:

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)。

删除新表:

drop table tabname。

增加一个列:

Alter table tabname add column col type。

添加主键:

Alter table tabname add primary key(col)。

删除主键:

Alter table tabname drop primary key(col)。

创建索引:

create [unique] index idxname on tabname(col….)。

删除索引:

drop index idxname。

创建视图:

create view viewname as select statement。

删除视图:

drop view viewname。

参考资料来源:

百度百科-sql语句大全

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2017-09-14 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2823万
展开全部
有两种方式:to_char方式和to_date方式
假设要查询2011-05-02到2011-05-30之间的数据,实现方式如下:
to_date方式:
select * from tablename where time>=to_date('2011-05-02','yyyy-mm-dd') and time <= to_date('2011-05-30','yyyy-mm-dd');
运行的结果是:可以显示05-02的数据,但是不能显示05-30的数据。
运行的结果是:可以显示05-02的数据,但是不能显示05-30的数据。
所有可以得出结论:
①如果想显示05-30的数据可以to_date('2011-05-31','yyyy-mm-dd'),这样就能显示30号的了。
②如果想要显示05-30的数据可以to_date('2011-05-30 23:59:59 999','yyyy-mm-dd hh24:mi:ss')也是可以查出来的。
to_char方式:
同样查询上面两个日期
select * from tablename where to_char(time,'yyyy-mm-dd')>=2011-05-02 and to_char(time,'yyyy-mm-dd')<=2011-05-3;
查询结果:可以同时显示05-02和05-30的数据。
另外:可以用between and 代替 >=符号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
badkano
2013-05-10 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885359
团长

向TA提问 私信TA
展开全部
access中有个mid函数,可以用来截取字符串或者日期
按照你这个
select * from 表名 where mid([TestTime],5,10) ='04/19/2013'

其中,5代表截取的开始位置,从左数,10代表截取的长度,你那个fri和04中间有没空格,看不出来,如果我写错的话,你自己改一下吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式