有人可以解释我这个MySQL查询:SQL查询调试
SELECT E.*,
LAST_DAY(
STR_TO_DATE(
concat(
LPAD(
month(
STR_TO_DATE(SUBSTRING(C.month, 1, 3),'%b')), 2, 0
), '/', '01', '/', C.year),'%m/%d/%Y')) as calendar_date
我不明白它选择什么日期....一周或?
有人可以解释我这个MySQL查询:SQL查询调试
SELECT E.*,
LAST_DAY(
STR_TO_DATE(
concat(
LPAD(
month(
STR_TO_DATE(SUBSTRING(C.month, 1, 3),'%b')), 2, 0
), '/', '01', '/', C.year),'%m/%d/%Y')) as calendar_date
我不明白它选择什么日期....一周或?
基础上STR_TO_DATE的使用%b
和阅读以下内容: MySQL: STR_TO_DATE Function,
的数据将必须有像JAN FEB MAR这样的日期信息来解释3次使用的子字符串。正如评论所说,它返回月份这样的最后日期为
2006-01-31
2016-09-30
MySQL手册页面str_to_date()
和LPAD()
至于LPAD,一个左垫月份与领先的最左侧的0。在这种情况下,只有一个,所以7将会在7月份进入07
。 的2016-7-31
后来不会很开心。但是一个Date
的2016-07-31
会。
也许,
c.month是 '月', '月',...
和c.year是任何一年(2016年,2017年,...)。
return is:
该c.month在该c.year的最后一天。
编辑
为了让它变得更好,你可以不喜欢它:
select last_day(STR_TO_DATE(concat(C.year,', ' C.month), '%Y, %M'));
如果没有查询的其余部分以及所用表格的相关信息,很难知道。 – Uueerdo
它返回月份的最后一天的日期(或日期时间)(如28日29日30日或31日,但以全日期格式,基于通过别名表c进入的日期。 sorta创建一个新的字符串,使日期成为本月的第一个日期,但是外部封装器会带回本月的最后一天,因此,calendar_date将看起来像'2016-09-30',例如 – Drew
这个不是合法的查询,它没有FROM子句 – Hogan