当我搜索5月或11月雇用的员工时,为什么第一个查询不返回任何行,而第二个查询却返回任何行?我的默认日期格式为rr-mm-dd。 如果我不知道默认的日期格式,是否也可以进行搜索?
SELECT EMPLOYEE_ID,LAST_NAME||', '||FIRST_NAME"Full Name",JOB_ID,HIRE_DATE
FROM EMPLOYEES WHERE UPPER(TO_CHAR(HIRE_DATE,'MONTH')) IN ('MAY','NOVEMBER');
SELECT EMPLOYEE_ID,LAST_NAME||', '||FIRST_NAME"Full Name",JOB_ID,HIRE_DATE
FROM EMPLOYEES WHERE TO_CHAR(HIRE_DATE,'MM') IN ('11','05');
答案 0 :(得分:3)
TO_CHAR
的问题在于它不会修剪尾随空白。
您应该使用
SELECT EMPLOYEE_ID,LAST_NAME||', '||FIRST_NAME"Full Name",JOB_ID,HIRE_DATE
FROM EMPLOYEES WHERE TRIM(TO_CHAR(HIRE_DATE,'MONTH') IN ('MAY','NOVEMBER');
如果您已经在UPPER
中使用大写字母MONTH
,则也不需要to_char
。
答案 1 :(得分:2)
您的查询有几个问题。
当您使用TO_CHAR(HIRE_DATE,'"MONTH"')
时,然后用空格字符填充月份名称,请尝试"MAY "
查看效果。它应该返回NLS_DATE_LANGUAGE
另一个问题是当前用户会话WHERE TO_CHAR(HIRE_DATE,'fmMONTH', 'NLS_DATE_LANGUAGE = American') IN ('MAY','NOVEMBER')
,它确定月份名称的语言。
如果您坚持使用月份名称,请使用
WHERE TRIM(TO_CHAR(HIRE_DATE,'MONTH', 'NLS_DATE_LANGUAGE = American')) IN ('MAY','NOVEMBER')
或
TO_CHAR(HIRE_DATE,'MM')
但是,最好的方法不是使用名称,而是使用月份数字。除了EXTRACT(MONTH FROM HIRE_DATE)
以外,您还可以使用 <div class="col-sm-6 col-xs-12">
<div class="toolbar-tools pull-right">
<ul class="nav navbar-right">
@if(Entrust::can('add_post'))
<li>
@foreach($main_title_options as $option)
<a href="{{ url('admin/post/create') }}" @if(isset($_GET['main_title']) && $_GET['main_title'] == $option->value)>
<i class="fa fa-plus"></i>
{{ trans('labels.create_' . $option->value ) }}
@else
{{ trans('labels.create_posts') }}
@endif
@endforeach
</a>
</li>
@endif
</ul>
</div>
</div>
来返回月份作为数字。