sqlite3 通过日期取季度

ijwsoft 2011-11-12 11:46:43
数据库为 sqlite3
表结构为 tblTask(ID int,TaskName varchar(20),ActionDate datetime)
问:sqlite 通过ActionDate 取季度 的 sql怎么写?

我这里暂时只知道几个例子:
取年份: select * from tblTask where strftime('%Y',ActionDate)='2011' --2011年
取月份: select * from tblTask where strftime('%m',ActionDate)='09'; -- 9月份

取季度?
...全文
370 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysj40540 2014-06-18
  • 打赏
  • 举报
回复
你好 我想获得表中数据所有存在的月份 怎么写呢?
ijwsoft 2011-11-14
  • 打赏
  • 举报
回复
我自己弄出来了


select ActionDate
,round(strftime('%d',ActionDate)/7 + 0.5) as Week -- 当月第几周
,strftime('%m',ActionDate) AS Month -- 月份
,(strftime('%m',ActionDate)/4 + 1) as Season --季度
,strftime('%Y',ActionDate) as Year -- 年份
from tblTask
ijwsoft 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 keenweiwei 的回复:]
引用 3 楼 dalmeeme 的回复:

%W 取第几周(注意W为大写)。


这个好像不对吧
[/Quote]

不好意思,是我没说清楚,我的本意是:取指定日期当月的第几周
JonseKeen 2011-11-14
  • 打赏
  • 举报
回复

select ActionDate
,round(strftime('%d',ActionDate)/7.0+ 0.495 ) as Week -- 当月第几周
,strftime('%m',ActionDate) AS Month -- 月份
,round(strftime('%m',ActionDate)/4.0 + 1) as Season --季度
,strftime('%Y',ActionDate) as Year -- 年份
from tblTask
ijwsoft 2011-11-13
  • 打赏
  • 举报
回复
向上取整(月份/3) = 季度,这个用sqlite怎么弄?

另外,通过日期取当前是第几周,sqlite怎么弄?

有关这方面的文档太少。
threenewbee 2011-11-13
  • 打赏
  • 举报
回复
select * from tblTask where (strftime('%m',ActionDate) + 3) / 4 = 1; --1季度
dalmeeme 2011-11-13
  • 打赏
  • 举报
回复
ijwsoft 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dalmeeme 的回复:]

%W 取第几周(注意W为大写)。
[/Quote]

这个好像不对吧
ijwsoft 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dalmeeme 的回复:]

取第2季度:
SELECT * FROM tblTask WHERE strftime('%m', ActionDate)/4+1=2
[/Quote]

谢谢,这个是取季度的正解
dalmeeme 2011-11-13
  • 打赏
  • 举报
回复
取第2季度:
SELECT * FROM tblTask WHERE strftime('%m', ActionDate)/4+1=2
dalmeeme 2011-11-13
  • 打赏
  • 举报
回复
%W 取第几周(注意W为大写)。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧