【发布时间】:2015-03-21 20:56:08
【问题描述】:
我正在尝试解决一项任务:我有一个包含有关舰船战斗信息的表格。战斗由 name 和 date 组成。问题是要获得战斗发生时每月的最后一个星期五。
WITH num(n) AS(
SELECT 0
UNION ALL
SELECT n+1 FROM num
WHERE n < 31),
dat AS (
SELECT DATEADD(dd, n, CAST(battles.date AS DATE)) AS day,
dateadd(dd, 0, cast(battles.date as date)) as fight,
name FROM num,battles)
SELECT name, fight, max(day) FROM dat WHERE DATENAME(dw, day) = 'friday'
我认为必须有一个最大日期之类的,但我的代码有误。
结果应该是这样的:
请帮忙!!
附: DATE_FORMAT 不可用
【问题讨论】:
-
@JohnP 那个帖子是关于 PHP 代码的,这个是纯 MySql。尽管 PHP 选项可能是最容易完成此任务的。
-
恐怕我的php不强,mysql也不强。而且我不能使用php
-
您确定此查询是针对 MySQL 的,而不是针对 SQL Server 或其他一些 RDBMS 的吗? (如果是MySQL,什么版本的MySQL支持公用表表达式?)