Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

这个SQL查询中日期条件语句应怎样写

Lee  发表于:2010-11-01 16:22:44  
复制

查询窗体中有:“年开始”、“月开始”和“年结束”、“月结束”4个文本框,作用是统计从某年某月到某年某月范围内的订单数量,所以SQL语句中我条件设为:
WHERE (year(日期)>=Forms!预算订单查询窗体!年开始 And year(日期)<=Forms!预算订单查询窗体!年结束) And (month(日期)>=Forms!预算订单查询窗体!月开始 And month(日期)<=Forms!预算订单查询窗体!月结束)
以上结果为没数据显示。
于是我把条件改为:
WHERE year(日期) Between (IIf(IsNull([Forms]![预算订单查询窗体]![年开始]),#2005-1-1#,[Forms]![预算订单查询窗体]![年开始])) And (IIf(IsNull([Forms]![预算订单查询窗体]![年结束]),#2099-12-31#,[Forms]![预算订单查询窗体]![年结束])) And month(日期) Between (IIf(IsNull([Forms]![预算订单查询窗体]![月开始]),#2005-1-1#,[Forms]![预算订单查询窗体]![月开始])) And (IIf(IsNull([Forms]![预算订单查询窗体]![月结束]),#2099-12-31#,[Forms]![预算订单查询窗体]![月结束]))
但这样得出的查询结果,一但跨年的话,统计的日期范围就不对。
不知怎样修改才正确

 

Top
wyh99999 发表于:2010-11-01 18:24:17

条件应是:>=年开始&月开始 and <=年结束&月结束

         如:201001              201101   

 

WHERE (year(日期) & month(日期)>=Forms!预算订单查询窗体!年开始 & Forms!预算订单查询窗体!月开始 And year(日期)& month(日期)<=Forms!预算订单查询窗体!年结束 & Forms!预算订单查询窗体!月结束 )

 

我是这样想的。供您参考。



wyh99999 发表于:2010-11-01 18:28:47

WHERE (((Year([日期]) & Month([日期]))>=[Forms]![预算订单查询窗体]![年开始] & [Forms]![预算订单查询窗体]![月开始] And (Year([日期]) & Month([日期]))<=[Forms]![预算订单查询窗体]![年结束] & [Forms]![预算订单查询窗体]![月结束]));



Lee 发表于:2010-11-01 20:04:52

按上述条件,依然是一跨年统计结果就不对。

上传附件以便研究。

 

点击下载此附件

Lee 发表于:2010-11-02 18:13:27
那位朋友能指点迷津。

煮江品茶 发表于:2010-11-02 18:37:36

主要是月份需要用格式化显示两位。

 

SELECT 订单预算.日期, 订单预算.产品编号, 订单预算.数量
FROM 订单预算
WHERE (((Format([日期],"yyyymm"))>=[Forms]![预算订单查询窗体]![年开始] & Format([Forms]![预算订单查询窗体]![月开始],"00") And (Format([日期],"yyyymm"))<=[Forms]![预算订单查询窗体]![年结束] & Format([Forms]![预算订单查询窗体]![月结束],"00")));



wyh99999 发表于:2010-11-02 18:59:37

这样可以了。从煮江老师这儿学到了一点。



Lee 发表于:2010-11-02 19:13:29

哦原来是日期格式问题,谢谢煮江先生。

另外,语句中的"00"应怎样理解?有劳指教。



Lee 发表于:2010-11-04 19:26:45

煮江先生在吗?



符鸿敏 发表于:2010-11-04 21:54:42
语句中的"00",是将月份控制成2位数格式。

Lee 发表于:2010-11-04 22:39:05
哦明白了,谢谢。

总记录:10篇  页次:1/1 9 1 :