有人可以解释一下这个mysql查询:
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
我不明白它选择的日期......一周,还是?
答案 0 :(得分:0)
也许,
c.month是' 1月',' 2月',...
和c.year是任何一年(2016年,2017年,......)
返回是:
c.month的最后一天。
修改的
为了让它变得更好,你可以这样做:
select last_day(STR_TO_DATE(concat(C.year,', ' C.month), '%Y, %M'));
答案 1 :(得分:0)
根据str_to_date使用%b
并阅读以下内容:
MySQL: STR_TO_DATE Function,
数据必须有像JAN FEB MAR这样的日期信息,它解释了3用法的子串。如评论中所述,它返回月份的最后日期,例如
2006-01-31
2016-09-30
的MySQL手册页
对于LPAD来说,那个月剩下最左边的0和0。在这种情况下只有一个,所以7将转到07
,例如7月。 Date
的{{1}}以后不会高兴。但2016-7-31
为Date
。