我正在尝试编写一个sql查询来获取上周的计数,格式为mm/ count /yyyy。对我来说,周三开始了新的一周。所以今天2012年3月8日是3月的第二周,最后一周的计数是03/01/2012。请注意,01表示周计数而不是日期。如果考虑2012年3月1日,则最后一周计数应为2月5日的最后一周,即2012年2月5日
更新:感谢Steve的评论,提醒我在这里澄清我的问题。每个月从第一个星期三开始。因此,2012年3月1日从2012年3月7日至2012年3月13日
是否有sql查询解决方案?
我正在使用sql-server
发布于 2012-03-09 05:41:14
这里有一些日期逻辑可以让你开始。我不能通过这两个例子来理解你那古怪的“上周计数”的定义,所以我不能写代码。
DECLARE
@Now datetime,
@Today datetime,
@MonthStart datetime,
@WeekCount int,
@Result varchar(10)
SET @Now = GetDate()
SET @Today = DateAdd(dd, DateDiff(dd, 0, @Now), 0)
SET @MonthStart = DateAdd(mm, DateDiff(mm, 0, @Today), 0)
-- relative to the actual day the month started
SET @WeekCount = ((DatePart(dd, @Today)-1) / 7) + 1
-- relative to Sunday
--SET @WeekCount = (DatePart(week, @Today) - (DatePart(week, @MonthStart) + 1
SET @Result = convert(varchar(10), @Today, 101)
SET @Result =
LEFT(@Result, 3) -- month/
+ RIGHT('z00' + convert(varchar(2), @WeekCount), 2) -- week with zero pad
+ RIGHT(@Result, 5) -- /year
SELECT
@Now as TheNow,
@Today as Today,
@MonthStart as MonthStart,
@WeekCount as WeekCount,
@Result as Result另请参阅SET DATEFIRST
发布于 2012-03-09 05:09:17
在oracle中:
select to_char( sysdate, 'w' ) from dual发布于 2012-03-09 09:04:47
@Steven,
很抱歉,这不适合作为评论。
您对“每月第n周”的描述不清楚。你的一周从周三开始。2月1日是星期三,因此2012年2月的几周,如果确实有5个星期,则是
您将3月8日描述为“3月的第二周”,因此3月的第一周必须是前一周,即2月29日至3月6日。请注意,这也是您所说的“2月的最后(第五)周”。
根据你的描述,你写成'02/05/2012‘和'03/01/2012’的星期是具有不同名称的同一周。
让你知道的规则是什么?
或者你的问题中有错误。
一旦你能描述你需要的东西,编程就会变得很容易。如果你不知道你想要什么,就不可能编程。
https://stackoverflow.com/questions/9624945
复制相似问题