关于时间选择查询的问题(付代码,高分)希望高手帮忙!在线给分!
下面的是下拉菜单的代码!
<SELECT id=select
style="FONT-SIZE: 12px; WIDTH: 130px; FONT-FAMILY: 宋体"
name="STM" width="10">
<OPTION
selected>--请选择所有时间--</OPTION>
<OPTION
value="1">1天内</OPTION>
<OPTION value="3">3天内</OPTION>
<OPTION value="7">一周内</OPTION>
<OPTION
value="15">半月内</OPTION>
<OPTION value="30">一个月内</OPTION>
<OPTION value="60">二个月内</OPTION>
<OPTION
value="90">三个月内</OPTION>
<OPTION value="183">半年内</OPTION>
<OPTION value="366">一年内</OPTION>
</SELECT>
-------------------------------------------------
在上面的代码中,要求的查询就比如是:获取当前日期,譬如查询从当前日期起1周内,还有就是,上面的代码中,一周内和前面value="7"的值怎么传给SQL语句啊? ACCESS的数据库查询语句怎么写啊?希望高手指点!毕业设计来的!55555555555555555
问题点数:100、回复次数:16Top
1 楼theodiact(theodiact)回复于 2006-03-15 10:52:31 得分 0
可从this.stm.item集合中取到,access可以使用SQL语句Top
2 楼ghostzp(不做举人,如何榜眼探花)回复于 2006-03-15 10:53:59 得分 0
1.获取当前日期,譬如查询从当前日期起1周内,
获取当前日期:date ;查询从当前日期起1周内:dateadd("d",date,7)
2.一周内和前面value="7"的值怎么传给SQL语句啊?
你提交就可以得到value=7了,一周内这个字串无法得到,要自己判断
3. ACCESS的数据库查询语句怎么写啊?
要看你的要求怎么写Top
3 楼sxsgssgs(.net新手)回复于 2006-03-15 11:17:09 得分 20
这是查询从现在开始到过去一天内的数据,查过去两天内的只需要再*2
select * from datetb where datediff("s",rq,now())<24*60*60Top
4 楼sxsgssgs(.net新手)回复于 2006-03-15 11:18:45 得分 0
select * from datetb where datediff("s",rq,now())<24*60*60
datetb是表名
rq是日期字段名
now()是现在的日期与时间
24*60*60是一天的秒数。Top
5 楼sxsgssgs(.net新手)回复于 2006-03-15 11:21:37 得分 0
严格来说,
select * from datetb where datediff("s",rq,now())<=24*60*60
还应该有=号,这表示刚好是24小时。Top
6 楼lovexpshl(白浪)回复于 2006-03-15 11:28:51 得分 60
在asp处理页面中:
Dim intDays
intDays = CInt(Request("STM")) ‘获取提前的天数
SQL 语句为:
"SELECT * FROM [表名] WHERE DateDiff(d, [日期字段名], " &now()& ")>" & intDays
Top
7 楼cestar2005(往事随风)回复于 2006-03-15 12:01:40 得分 0
楼上的写的挺全,用DateDiff处理最好Top
8 楼leeleko(光头仔_lee)回复于 2006-03-15 12:14:58 得分 0
在这里谢过大家了,我调试下!Top
9 楼iuhxq(小灰)回复于 2006-03-15 12:35:07 得分 10
<SELECT id=select
style="FONT-SIZE: 12px; WIDTH: 130px; FONT-FAMILY: 宋体"
name="STM" width="10">
<OPTION
selected>--请选择所有时间--</OPTION>
<OPTION
value="1">1天内</OPTION>
<OPTION value="2">3天内</OPTION>
<OPTION value="3">一周内</OPTION>
<OPTION
value="4">半月内</OPTION>
<OPTION value="5">一个月内</OPTION>
<OPTION value="6">二个月内</OPTION>
<OPTION
value="7">三个月内</OPTION>
<OPTION value="8">半年内</OPTION>
<OPTION value="9">一年内</OPTION>
</SELECT>
然后转换成时间长度
用DateAdd最好,因为DateDiff返回的不准确,例如2006-1-1 23:00:00和2006-1-2 1:0:0相差2个小时,可是结果是1天。所以用DateAdd最好,要不你用DateDiff取得秒数也行Top
10 楼znjgress(四空和尚)回复于 2006-03-15 13:13:19 得分 10
描述
返回两个日期之间的时间间隔。
语法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateDiff 函数的语法有以下参数:
参数 描述
interval 必选。String expression 表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。
date1, date2 必选。日期表达式。用于计算的两个日期。
firstdayofweek 可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。
firstweekofyear 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。
设置
interval 参数可以有以下值:
设置 描述
yyyy 年
q 季度
n 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
m 分钟
s 秒
firstdayofweek 参数可以有以下值:
常数 值 描述
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbSunday 1 星期日(默认)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 参数可以有以下值:
常数 值 描述
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。
vbFirstFullWeek 3 由在新的一年中第一个完整的周开始。
说明
DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。
要计算 date1 和 date2 相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval 为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。如果 date1 是星期一,则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1 是星期日,也不会计算 date1。
如果 date1 晚于 date2,则 DateDiff 函数返回负数。
firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。
如果 date1 或 date2 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (" ") 中并且省略年份,则在代码中每次计算 date1 或 date2 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。
在 interval 为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff 返回 1 表示相差一个年份。
下面的示例利用 DateDiff 函数显示今天与给定日期之间间隔天数:
Function DiffADate(theDate)
DiffADate = "从当天开始的天数:" & DateDiff("d", Now, theDate)
End Function
Top
11 楼leeleko(光头仔_lee)回复于 2006-03-16 10:27:29 得分 0
我用了上面的调试,出现下面的错误。。晕死了。。弄了我2天时间了。
[Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'and DateDiff(d, [begintime], 2006-3-16 10:27:14)>3' 中。
代码:
sql="select * from corperation where "
if addone_id<>"" then
sql=sql&" province like'%"&addone_id&"%'"
end if
if intDays<>"" then
sql_time=" and "+" DateDiff(d, [begintime], "&now()&")>" &intDays
sql=sql+sql_time
end ifTop
12 楼sxsgssgs(.net新手)回复于 2006-03-16 10:54:56 得分 0
晕死人,你就用的那个写法,是最准确的。
你怎么还用他们的?他们的那个算法不太准确。Top
13 楼leeleko(光头仔_lee)回复于 2006-03-16 11:05:32 得分 0
我也用了你的去调试,现在出现的错误是:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC Microsoft Access Driver] WHERE 子句语法错误。
/kjpt/job/listme.asp,行112
好郁闷啊!Top
14 楼leeleko(光头仔_lee)回复于 2006-03-16 11:47:13 得分 0
请大家帮忙解决一下。麻烦了。。Top
15 楼leeleko(光头仔_lee)回复于 2006-03-17 22:31:21 得分 0
这个我已经解决了。不过用的办法比较土。
放出来给大家看看,关于DateDiff我还没弄明白,不过真的谢谢大家。Top
16 楼hreoghost(Challenge oneself,break through limit!)回复于 2006-04-06 08:31:30 得分 0
学习Top




