目录
WEEKDAY+DATESERIAL+FORMAT函数的使用
源数据表
母亲节是每年5月份的第二个星期日,每年的母亲节日期都不一样。通过SQL获取今年母亲节的日期。
解决方案
SELECT FORMAT(DATESERIAL(YEAR(NOW()),5,15)-WEEKDAY(YEAR(NOW()) & '-5-15',2),'YYYY-M-D') AS 母亲节
WEEKDAY+DATESERIAL+FORMAT函数的使用
本例的实现是利用DATESERIAL函数来构造一个中间日期,然后充分利用了日期的一些规律。DATESERIAL语法如下:
DATESERIAL(年,月,日)
首先利用YEAR函数获取今年的年份,然后通过DATESERIAL函数将年、月、日组合直接构造一个日期。
两种极端情况是5月1日为星期一和5月1日为星期日。母亲节为5月的第二个周日,则5月15日内必定包含第二个周日。要得到母亲节的日期,也就是第二个星期日,只要在5月15日的基础上减去5月15日所在星期的天数即可。 这个天数可以利用WEEKDAY函数得到,这里将星期一作为第一天,公式如下:
WEEKDAY(DATESERIAL(YEAR(NOW()),5,15),2)
可以对上述公式进一步简化,利用字符的简单连接获得指定的日期。例如,将DATESERIAL(YEAR(NOW()),5,15)简化为YEAR(NOW())&’