我正在尝试获取生日在这周内的记录,但我会query
返回出生在这周之间的人Tuesday and Monday
。我要的人之间出生Monday and Sunday
。如何更改我的查询?
WHERE TO_CHAR(SYSDATE, 'WW') = TO_CHAR(BIRTHDAY_DATE, 'WW')
星期一可能不是你一周的第一天。
在系统下,您可以通过以下方式获得 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。
谢谢回答我问题的人。我找到了解决方案。在这里,我创建了当前周的日期、月份的字符串:
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 所说的那样工作。
请试试这个,
WHERE BIRTHDAY_DATE between sysdate - (TO_CHAR(SYSDATE, 'WW')) + 1 AND sysdate - (TO_CHAR(SYSDATE, 'WW')) + 7