我希望得到的时间少于“上周日”。
以下代码仅显示小于“当前日期”的时间,是否有小于“上周日”的功能?
SELECT ProjectTitle, TimeByDay
FROM cumulativebyday
Where TimeByDay < CURRENT_TIMESTAMP
Order by TimeByDay ASC;
答案 0 :(得分:0)
Mysql有一个名为DayOfWeek(date)
获取当周的当前日期,例如今天将返回5. 1等于星期日,所以今天我们需要回顾5-1天= 4天。 (如果差异为零,我们将在星期天举行,所以我们需要回到7天才能获得最后一个星期日)
使用date_sub(日期减法)和时间戳转换为时间戳,我们可以得到过去最近的星期日的时间戳。我没有测试过这个,但它应该可行。如果要包含或排除该星期日的记录,您可能需要添加一个或减去一个。
Where TimeByDay < TIMESTAMP(DATE_SUB(CURRENT_DATE(), IF(DAYOFWEEK()-1 == 0, 7, DAYOFWEEK()-1))
答案 1 :(得分:0)
不确定您是否正在使用标记中的mysql或sql-server。
这是您可以在sql-server中尝试的内容。
假设工作日以英文返回。也可以考虑使用DATEPART
返回的数字作为工作日。同样,它将依赖于服务器配置,因为工作日可以从星期日或星期一开始计数。
SELECT ProjectTitle, TimeByDay
FROM cumulativebyday
Where TimeByDay <
DATEADD(DAY,
CASE DATENAME(WEEKDAY, CURRENT_TIMESTAMP)
WHEN 'Monday' THEN -1
WHEN 'Tuesday' THEN -2
WHEN 'Wednesday' THEN -3
WHEN 'Thursday' THEN -4
WHEN 'Friday' THEN -5
WHEN 'Saturday' THEN -6
WHEN 'Sunday' THEN -7
END,
CONVERT(DATE, CURRENT_TIMESTAMP)
)
Order by TimeByDay ASC;