hur.cn - 华软网

 热门搜索

高手请进:日期段查询问题,头疼啊

  作者:未知    来源:网络    更新时间:2019/1/5
我在窗口上增加了两个editmask控件,设定为datemask!类型,格式是YYYY-MM-DD,在数据库内外我有一个日期型的字段dj_date,现在我想根据em_1.text和em_2.text确立的日期范围查询表中合适条件的记录,代码以下:
string sql

sql = " string(dj_date,'yyyymmdd') >= '"+string(em_1.text,'yyyymmdd')+"' and string(dj_date,'yyyymmdd') <= '"+string(em_2.text,'yyyymmdd')+"' "
 
dw_1.setfilter(sql)
 
dw_1.filter()

如果现在我在em_1中输入2006-01-01,在em_2中输入2006-01-31,这样查询照理来说能够找出所有2006年1月份的记录,而数据库中也的确有,然则我一查询就是什么都没有,不知道问题在那里,郁闷死了,高手们帮助诊疗诊疗,谢谢!
------华软网友回答------
调试一下看看string(em_1.text,'yyyymmdd')是否是你想要的数据
------华软网友回复------
调试结果
sql = " string(dj_date,'yyyymmdd') >= 'yyyymmdd' and string(dj_date,'yyyymmdd')<= 'yyyymmdd')
为什么会这样?

应该是
sql = " string(dj_date,'yyyymmdd') >= '2006-01-01' and string(dj_date,'yyyymmdd')<= '2006-01-3')
才对呀


------华软网友回复------
sql = " string(dj_date,'yyyymmdd') >= '2006-01-01' and string(dj_date,'yyyymmdd')<= '2006-01-3')
=========================
sql = " string(dj_date,'yyyy-mm-dd') >= '"+string(em_1.text,'yyyy-mm-dd')+"' and string(dj_date,'yyyy-mm-dd') <= '"+string(em_2.text,'yyyy-mm-dd')+"' "
------华软网友回复------
引号只需没点错
应该不会有问题,能够思量 dj_date 换成 
"表名"."dj_date"
看看
------华软网友回复------
照旧用日期类型来对照吧 

SQL的例子 (sql没有日期类型,要转换)

( 签订日期>=dateTime ('2006-6-6 00:00:00'))  and  
( 签订日期<=dateTime ('2006-7-7 23:59:59'))
------华软网友回复------
哦,是由于SQL没有日期类型吗?怪不得,我再试试看
------华软网友回复------
^-^
------华软网友回复------
...照旧没搞定
一个详细的日期我知道怎么写,然则要动态改变日期段(根据em_1.text和em_2.text的值)来查,格式不知道怎么写了.如果是string类型,能够在变量前面加":",但现在是datetime类型,怎么写啊?
我QQ41883266,高手指点下
------华软网友回复------
给你个图自己捉摸吧,你的日期段:

查询日期段:           ------------日期1--------日期2--------...
数据库的日期记录:d_date:a-b--c----d--------e---f-------g----...

知足你日期段的日期就是 :
d_date>=日期1 and d_date<=日期2

当然了,你数据库里面保存的d_date也应该是没有时间的即可.
------华软网友回复------
另有日期段的对照呢,用图表示一下也简单的很了

------华软网友回复------
...照旧没搞定
一个详细的日期我知道怎么写,然则要动态改变日期段(根据em_1.text和em_2.text的值)来查,格式不知道怎么写了.如果是string类型,能够在变量前面加":",但现在是datetime类型,怎么写啊?
我QQ41883266,高手指点下
-------------------------------------
string ls_filter
ls_filter = "( d_date>= dateTime('" + em_1.text  + " 00:00:00')  ) and (" + &
    "date <= datetime ('" +  + em_2.text  + " 23:59:59') )"
------华软网友回复------
搞陌生楼主,你究竟是在查询照旧在过滤?按你这样的写法,就算正确无误,也决不能从数据库里检索出数据来的。
------华软网友回复------
帮顶
------华软网友回复------
to:阿麦
查询也好,过滤也好,我的目的是获得我想要的数据
PS:查询和过滤难道有本质的区别吗?

此问题我已通过其余方式解决,没结贴是想就日期段查询(过滤)这个问题做一些深入的讨论
------华软网友回复------
呵呵,验证了下
string ls_filter
ls_filter = "( d_date>= dateTime('" + em_1.text  + " 00:00:00')  ) and (" + &
    "date <= datetime ('" +  + em_2.text  + " 23:59:59') )"
这个写法是对的.终于能够结贴了.
谢谢所有参加讨论的朋友.
特别谢谢心情卡片      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。