在Oracle SQL中比较日期
我试图显示1994年6月20日之后雇用的员工人数,
但我得到一个错误说“JUN”无效的标识符。请帮助,谢谢! Select employee_id,count(*) From Employee Where to_char(employee_date_hired,'DD-MON-YY') > 31-DEC-95;31-DEC-95不是字符串,20-JUN-94也不是。他们是数字与一些额外的东西添加到末端。这应该是’31 -DEC-95’或’20 -JUN-94′ – 请注意单引号’。这将使您能够进行字符串比较。 但是,你不是做一个字符串比较;你正在做一个日期比较。您应该将字符串转换为日期。通过使用内置的 至今() select employee_id from employee where employee_date_hired > to_date('31-DEC-95','DD-MON-YY') 这种方法有一些不必要的陷阱 >作为a_horse_with_no_name在注释中注释,DEC,不一定意味着12月。这取决于您的 select employee_id from employee where employee_date_hired > to_date('31-12-1995','DD-MM-YYYY') 日期文字 日期文字是ANSI标准的一部分,这意味着您不必使用Oracle特定的函数。使用文字时,必须以YYYY-MM-DD格式指定日期,并且不能包含时间元素。 select employee_id from employee where employee_date_hired > date '1995-12-31' 请记住,Oracle date数据类型包含时间元素,因此没有时间部分的日期等同于1995-12-31 00:00:00。 如果要包括时间部分,则必须使用时间戳文字,格式为YYYY-MM-DD HH24:MI:SS [.FF0-9] select employee_id from employee where employee_date_hired > timestamp '1995-12-31 12:31:02' 更多信息
alter session set nls_date_format = 'DD.MM.YYYY HH24:MI:SS'; 意即: > DD数字日期的一个月,1 – 31 您可以通过查询V $ NLS_PARAMETERSs查询您当前的语言和日期语言设置,并通过查询V $ NLS_VALID_VALUES查询有效值的全部范围。 进一步阅读 > Format models 顺便说一句,如果你想要计数(*),你需要按employee_id分组 select employee_id,count(*) from employee where employee_date_hired > date '1995-12-31' group by employee_id 这给你每个employee_id的计数。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- FLASH中响应键盘事件的四种方法
- Dojo mobile TweetView 系列教程之一 —— dojox.mobile入门
- 温故而知新:AJAX原生JavaScript写法
- react-native – 基本FlatList代码抛出警告 – React Nativ
- Postgres psql: FATAL: Peer authentication failed for us
- FLASH存储介质损坏的视频修复方法
- 《从零开始学Swift》学习笔记(Day 45)――重写方法
- 转义字符导致sqlite迁移至mysql少了15w数据
- ruby-on-rails – 在Ruby哈希中提取`Moped :: BSON :: Docu
- ruby-on-rails – Rails上的批量操作Restful Resources