3

我正在尝试获取生日在这周内的记录,但我会query返回出生在这周之间的人Tuesday and Monday。我要的人之间出生Monday and Sunday。如何更改我的查询?

WHERE TO_CHAR(SYSDATE, 'WW') = TO_CHAR(BIRTHDAY_DATE, 'WW')
4

3 回答 3

2

星期一可能不是你一周的第一天。

在系统下,您可以通过以下方式获得 NLS_TERRITORY 值:

显示参数 NLS_TERRITORY

任何会话下,您都可以这样设置

为当前会话设置它。

ALTER SESSION SET NLS_TERRITORY=slovenia
SELECT to_char(to_date('13.01.2013','DD.MM.YYYY'),'d') from dual;--SUNDAY

结果是 7。

ALTER SESSION SET NLS_TERRITORY=america
select to_char(to_date('13.01.2013','DD.MM.YYYY'),'d') from dual--SUNDAY

结果为 1。

于 2013-01-17T06:48:30.220 回答
1

谢谢回答我问题的人。我找到了解决方案。在这里,我创建了当前周的日期、月份的字符串:

DateTime sdate = DateTime.Now.AddDays(-1 * (int)DateTime.Now.DayOfWeek + 1);
        string findDay = "";
        for (int i = 0; i < 7; i++)
            findDay += (findDay.Length > 0 ? "," : "") + "'" + sdate.AddDays(i).Day.ToString("00") + "." + sdate.AddDays(i).Month.ToString("00") + "'";

和 sql:

WHERE TO_CHAR(BIRTHDAY_DATE, 'DD.MM') IN (" + findDay + ")

'WW' 就像 elrado 所说的那样工作。

于 2013-01-17T07:45:22.333 回答
0

请试试这个,

WHERE BIRTHDAY_DATE between sysdate - (TO_CHAR(SYSDATE, 'WW')) + 1 AND sysdate - (TO_CHAR(SYSDATE, 'WW')) + 7
于 2013-01-17T06:47:47.923 回答