Foxtable(狐表)用户栏目专家坐堂 → 日期的季度和周的selec语句如何写(OK)


  共有3730人关注过本帖树形打印复制链接

主题:日期的季度和周的selec语句如何写(OK)

帅哥哟,离线,有人找我吗?
zpx_2012
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
日期的季度和周的selec语句如何写(OK)  发帖心情 Post By:2013/10/31 17:26:00 [只看该作者]

如下:可以用Select 语句查询日期的年,月作为它用,
SELECT Year(日期) AS 年,  Month(日期) AS 月, SUM(数量) AS 数量 FROM {订单}

如果还想得到日期是一年中的第几季和第几周用什么函数?比如:
SELECT Year(日期) AS 年 XXX(日期) AS 季, XXX (日期) AS 周,SUM(数量) AS 数量 FROM {订单}
上面红色XXX部份分别要用哪两个函数,

用 SELECT Year(日期) AS 年DatePart('q', 日期) AS 季度, DatePart('ww',  " & c & " ) AS 周 FROM {订单}
c 是一个日期变量,总提示DatePart指定的第1个参数无效

谢谢!

[此贴子已经被作者于2013-10-31 17:54:13编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/31 17:33:00 [只看该作者]

没有现成的函数,你可以根据 Month(日期) 来实现

如果是MSSQL 可以

  SELECT Year(日期) AS 年,case   
  when  month(日期)  < 4    then   '第一季度'   
  when  month(日期)  BETWEEN 4 and 6   then   '第二季度'   
  when  month(日期)  BETWEEN 7 and 9   then   '第二季度'    
  when  month(日期)  BETWEEN 10 and 12   then   '第二季度'    
  end   as   季度

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/31 17:35:00 [只看该作者]

你不能直接将SQL语句写成:

 

SELECT Year(日期) AS 年, DatePart('q', 日期) AS 季度, DatePart('ww', " & c & " ) AS 周 FROM {订单}

 

这是代码,你的用代码解决:

 

Dim s As string  = "SELECT Year(日期) AS 年, DatePart('q', 日期) AS 季度, DatePart('ww', " & c & " ) AS 周 FROM {订单}"

 

然后将s赋值给需要调用这个seect语句的立方,例如:

 

cmd.CommandText  = s

 

或:

 

Tables("xxx").Fill(s, ....)

 

[此贴子已经被作者于2013-10-31 17:37:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/31 17:37:00 [只看该作者]

DatePart  好东东都忘记拿出来用了 图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/10/31 17:38:00 [只看该作者]

把 q 的单引号去掉


 回到顶部
帅哥哟,离线,有人找我吗?
zpx_2012
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/10/31 17:44:00 [只看该作者]

SQL语句的写法应该是正确的,用msgbox可以显示出来。

[此贴子已经被作者于2013-11-1 0:16:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/10/31 17:47:00 [只看该作者]

你还是没有把单引号去掉

 

DatePart(Interval, date)

 

的Interval是不需要单引号的

[此贴子已经被作者于2013-10-31 17:48:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/31 17:49:00 [只看该作者]

你这个图片对于解决你的问题没有任何意义。

既然怀疑合成的sql语句有问题,你就用output.show将很成的sql语句显示到命令窗口,然后复制这个sql语句到sql执行窗口执行调试分析,或者贴出你合成的语句给大家看。

 

另注意如果你的是sql server,q,w这些是不需要单引号的。


 回到顶部
帅哥哟,离线,有人找我吗?
zpx_2012
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/10/31 17:51:00 [只看该作者]

谢谢大家,逛逛说的很正确,把单收号去掉就可以了。谢谢 逛逛!

 回到顶部