如何 用mysql语句获取本季度的第一天 本月

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何 用mysql语句获取本季度的第一天 本月相关的知识,希望对你有一定的参考价值。

参考技术A 本季度的第一天
,然后你可以把字符串再转换为日期。
方法很多,包括同一个函数的别名(同义词)也很多。比如CURDATE(),CURRENT_DATE(),
CURRENT_DATE,
NOW
等都可以返回当天
mysql教程>
select
CURDATE(),ELT(QUARTER(CURDATE()),
->
year(CURDATE())*1000+0101,
->
year(CURDATE())*1000+0401,
->
year(CURDATE())*1000+0701,
->
year(CURDATE())*1000+1001)
as
firstDayofQ;
+------------+-------------+
|
CURDATE()
|
firstDayofQ
|
+------------+-------------+
|
2009-05-19
|
2009401
|
+------------+-------------+
1
row
in
set
(0.00
sec)
mysql>
用mysql语句获取本季度的第一天
本月的第一天,
date(
concat(year(curdate()),'-',month(curdate()),'-','1'))
本周的第一天
curdate()-
WEEKDAY(curdate())
用mysql语句获取本季度的第一天

获取一个季度的第一天和最后一天以及 2 个季度的日期

【中文标题】获取一个季度的第一天和最后一天以及 2 个季度的日期【英文标题】:getting first day and last day of a quarter and 2 quarters back for a date 【发布时间】:2018-05-23 16:06:27 【问题描述】:

如何获取日期的一个季度的第一天和最后一天? 以及 Hive 或 sql

中日期的 2 个季度的第一天和最后一天

例如,对于 2014 年 2 月 3 日的第一天和季度的最后一天,将是 2014 年 1 月 1 日和 2014 年 3 月 31 日 并且对于同一日期,前两个季度的第一天和最后一天将是 2013 年 7 月 1 日和 2013 年 9 月 31 日

【问题讨论】:

欢迎来到 Stack Overflow。请阅读如何提供Minimal, Complete, and Verifiable example 您还可以从How to ask 和What is expected of SO users 中受益 【参考方案1】:

您可以通过以下方式完成此操作(不是太花哨,但没有直接的方法)。为了简单起见,我只是连接了两个输出日期

-- before Hive 1.3
select 
case 
when ceil(month(mydate)/ 3.0) =  1 then concat("Jan 01 ",year(mydate),"|","Mar 31 ",year(mydate))
when ceil(month(mydate)/ 3.0)  =  2 then then concat("Apr 01 ",year(mydate),"|","Jun 30 ",year(mydate))
when ceil(month(mydate)/ 3.0)  =  3 then then concat("Jul 01 ",year(mydate),"|","Sep 30 ",year(mydate))
when ceil(month(mydate)/ 3.0)  =  4 then then concat("Oct 01 ",year(mydate),"|","Dec 31 ",year(mydate))
else
null
end,
ceil(month(mydate)) as quarter

from (
    select 
    from_unixtime(unix_timestamp('Feb 03 2014' , 'MMM dd yyyy')) as mydate
) t;


--Hive 1.3 or higher

select 
case 
when quarter(mydate) =  1 then concat("Jan 01 ",year(mydate),"|","Mar 31 ",year(mydate))
when quarter(mydate)  =  2 then then concat("Apr 01 ",year(mydate),"|","Jun 30 ",year(mydate))
when quarter(mydate)  =  3 then then concat("Jul 01 ",year(mydate),"|","Sep 30 ",year(mydate))
when quarter(mydate)  =  4 then then concat("Oct 01 ",year(mydate),"|","Dec 31 ",year(mydate))
else
null
end,
ceil(month(mydate)) as quarter

from (
    select 
    from_unixtime(unix_timestamp('Feb 03 2014' , 'MMM dd yyyy')) as mydate
) t;

只需在内部查询的选择中替换您的列的硬编码日期

【讨论】:

select to_date( concat(year(_c0),"-",1+3*(quarter(_c0)-1),"-01")) from ( select CURRENT_DATE() ) as asdf ; Apache Hive(版本 2.3.2) 和学期开始select to_date( concat( YEAR(_c0), "-0", CASE WHEN QUARTER(_c0) IN (1, 2) THEN 1 ELSE 7 END, "-01" )) from ( select CURRENT_DATE() ) as asdf ;

以上是关于如何 用mysql语句获取本季度的第一天 本月的主要内容,如果未能解决你的问题,请参考以下文章

获取一个季度的第一天和最后一天以及 2 个季度的日期

获取当前季度的第一天

用sql语句求本季度比上一个季度多多少天

pandas通过DatetimeProperties对象获取日期对象是否是所在季度的第一天(is quarter start)筛选dataframe数据中日期对象是所在季度第一天的数据行

pandas通过DatetimeProperties对象获取日期对象是否是所在季度的第一天(is quarter start)

pandas通过DatetimeProperties对象获取日期对象是否是所在季度的第一天(is quarter start)