oracle: 给定起始日期,按月份统计两个日期间每个月份的工作日(非周六周天)的天数,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle: 给定起始日期,按月份统计两个日期间每个月份的工作日(非周六周天)的天数,谢谢相关的知识,希望对你有一定的参考价值。

如给定日期为2013.09.09和2013.12.09,则查询结果为2013.09:17;2013.10:23;2013.11:21;2013.12:5

with t1 as (select to_date('2013.09.09','yyyy.mm.dd')+level-1 ymd
from dual
connect by level<=to_date('2013.12.09','yyyy.mm.dd')-to_date('2013.09.09', 'yyyy.mm.dd')+1)
,t2 as (select to_char(ymd, 'yyyy.mm') ym, to_char(ymd, 'd') d, ymd from t1)
select ym,count(d) from t2
where d<>1 and d<>6
group by ym
参考技术A select to_char(日期,'YYYY.MM'),count(1)
from table_name
where 日期 between to_date('20130909','YYYYMMDD') and to_date('20131209','YYYYMMDD')
and TO_CHAR(日期,'DAY') not in ('星期六','星期日')
group by to_char(日期,'YYYY.MM')
;追问

你好,请问回答中的“日期”是指?

追答

你的日期字段,字段类型是 date的

追问

恩,我想通过原表中的两个日期,统计这两个日期中每个月份的工作日天数。刚开始学习oracle,不是很会写

追答

日期 between 日期 and 日期2
那你这样改就好了
你要回吧日期格式和字符串格式之间的互相转换搞懂就什么问题都能搞定了

追问

谢谢你的讲解啦

从 Oracle 中的日期获取月份名称

【中文标题】从 Oracle 中的日期获取月份名称【英文标题】:Get month name from date in Oracle 【发布时间】:2011-05-28 16:50:33 【问题描述】:

如何从 Oracle 中的给定日期获取月份名称?

如果给定的日期是'15-11-2010',那么我想要从这个日期开始的November

【问题讨论】:

【参考方案1】:
select to_char(sysdate, 'Month') from dual

在您的示例中将是:

select to_char(to_date('15-11-2010', 'DD-MM-YYYY'), 'Month') from dual

【讨论】:

【参考方案2】:

试试这个,

select to_char(sysdate,'dd') from dual; -> 08 (date)
select to_char(sysdate,'mm') from dual; -> 02 (month in number)
select to_char(sysdate,'yyyy') from dual; -> 2013 (Full year)

【讨论】:

这是正确的,但没有回答问题如何获取月份name【参考方案3】:

to_char(mydate, 'MONTH') 将完成这项工作。

【讨论】:

【参考方案4】:

在 Oracle(至少 11g)数据库中:

如果你打了

select to_char(SYSDATE,'Month') from dual;

它给出未格式化的月份名称,带有空格,例如May 将被指定为“May”。字符串 May 会有空格。

为了格式化月份名称,即修剪空格,您需要

select to_char(SYSDATE,'fmMonth') from dual;

这将返回“May”。

【讨论】:

【参考方案5】:

如果您尝试从字段中提取值,您可以使用:

select extract(month from [field_name])
from [table_name]

您还可以为上面的“月”提取值插入日期或年份。

【讨论】:

这只会给出月份值而不是文本。【参考方案6】:

试试这个

select to_char(SYSDATE,'Month') from dual;

全名试试这个

select to_char(SYSDATE,'Mon') from dual;

缩写

您可以在这里找到更多选项:

https://www.techonthenet.com/oracle/functions/to_char.php

【讨论】:

【参考方案7】:

如果您采用系统日期:

--Full month name :
select to_char(trunc(sysdate,'MONTH'),'MONTH') as month from dual; --MARCH    
--Short month name:
select to_char(trunc(sysdate,'MON'),'MON') as month from dual; --MAR
--Month number:
select to_char(trunc(sysdate,'MM'),'MM') as month from dual;  --03

如果您选择特定日期:

--Full month's name:
select to_char(trunc(to_date('11-03-2021','DD-MM-YYYY'),'MONTH'),'MONTH') as month from dual; --MARCH
--Short month's name:
select to_char(trunc(to_date('11-03-2021','DD-MM-YYYY'),'MON'),'MON') as month from dual; --MAR
--Month's number:
select to_char(trunc(to_date('11-03-2021','DD-MM-YYYY'),'MM'),'MM') as month from dual;  --03

【讨论】:

以上是关于oracle: 给定起始日期,按月份统计两个日期间每个月份的工作日(非周六周天)的天数,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

js如何计算两个日期的月份差?

C语言计算两日期间的天数

从 Oracle 中的日期获取月份名称

如何用PHP+MySQL计算两个日期之间的月份数和其余下的天数?

android里 怎么计算日期差

检查两个日期是不是包含给定月份