项目中需要使用时间过滤信息,而且时间是带有时分秒的,刚开始使用YYYY-MM-DD HH:MM:SS这种格式进行比较,所查询出来的数据不正确,查询语句:
SELECT s.sbsj FROM T_JBXX s where TO_CHAR(s.SBSJ, 'YYYY-MM-DD HH:mm:ss') >= '2014-06-25 09:55:56.0' AND TO_CHAR(s.SBSJ, 'YYYY-MM-DD HH:mm:ss') <= '2014-06-26 11:56:59.0' ORDER BY SFSJ DESC
本来正确的查询结果应该为:
可是结果却是:
出现的结果不正确,后来在网上查看说应该使用YYYY-MM-DD HH24:MI:SS这种格式来过滤时间,所以正确的sql语句应该是这样的:
SELECT s.sbsj FROM T_JBXX s where TO_CHAR(s.SBSJ, 'YYYY-MM-DD HH24:MI:SS') >= '2014-06-25 09:55:56.0' AND TO_CHAR(s.SBSJ, 'YYYY-MM-DD HH24:MI:SS') <= '2014-06-26 11:56:59.0' ORDER BY SFSJ DESC
这样查询的结果就是正确的。网上看到一种 解释说是因为SQL中不区分大小写,MM和mm被认为是相同的格式代码,因此Oracle的SQL采用了mi代替分钟。
相关推荐
oracle日期格式和java日期格式...oracle中to_char(sysdate,'yyyy-mm-dd hh24:mm:ss')和to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')有着巨大差别: select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;【用这个】
to_number(to_date(to_char(d.surmon,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - to_date('1970-01-01 8:0:0', 'yyyy-mm-dd hh24:mi:ss'))*24*60*60*1000 from ( SELECT case to_number(to_char...
restore database until time "to_date('2019-08-19 08:49:00','yyyy-mm-dd hh24:mi:ss')"; recover database until time "to_date('2019-08-19 08:49:00','yyyy-mm-dd hh24:mi:ss')"; alter database open ...
1.查询时间段内执行的sql、Produce select * from v$sqlarea a where 1=1 and a.LAST_ACTIVE_... to_date( '2013-02-21 18:24:00','yyyy-MM-dd HH24:mi:ss') --and a.LAST_ACTIVE_TIME < to_date('2012-02-21
SELECT TO_DATE('2007-09-07 00:00:00', 'yyyy-mm-dd hh24:mi:ss') FROM dual; 这将将日期字符串 '2007-09-07 00:00:00' 转换为 Oracle 中的日期类型。 2. TO_CHAR 函数 TO_CHAR 函数用于将 Oracle 中的日期类型...
select * from 表名 as of timestamp to_timestamp('2020-04-27 17:25:00','yyyy-mm-dd hh24:mi:ss') ``` 开启行移动功能 ```java alter table 表名 enable row movement ``` 恢复表数据 ```java flashback table ...
因此,当你使用`'yyyyMMdd hh24:mm:ss'`作为格式模型时,Oracle会错误地解析`mm`为月份,而不是分钟,导致输出的时间不准确。例如,如果当前时间是下午1点30分,使用错误的格式化会显示为1月30日的某个时间,而不是...
示例:SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS This, ROUND(SYSDATE) AS Round_Day, TO_CHAR(SYSDATE+1/6, 'YYYY-MM-DD HH24:MI:SS') AS Next_4Hour, ROUND(SYSDATE+1/6) AS Round_Day FROM dual;...
在 TO_DATE 函数中,format 可以是各种不同的格式,例如 'YYYY-MM-DD HH24:MI:SS'、'DD-MON-RR'、'YYYYMMDD' 等。这些格式字符串可以由多个组件组成,每个组件都可以指定日期的不同部分,例如年、月、日、时、分、秒...
TO_CHAR(NEW_TIME(SYSDATE, 'EST7GMT'), 'YYYY-MM-DD HH24:MI:SS') AS GMT FROM dual; ``` 结果: ``` CHINA GMT ------------------- ------------------- 2020-09-08 10:30:00 2020-09-08 14:30:00 ``` 4. NEXT_...
SELECT TO_DATE('2007-11-02 13:45:25', 'yyyy-mm-dd hh24:mi:ss') FROM DUAL; ``` TO_CHAR函数 TO_CHAR函数是将日期类型转换为字符串的函数。该函数的基本语法为:`TO_CHAR(date, format)`,其中date是要转换的日期...
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; ``` 这将当前系统日期和时间转换为字符串形式。 2. varchar 转 date 使用 to_date 函数可以将 varchar 类型转换为 date 类型。例如: ```sql ...
* `TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')` 将当前日期和时间转换为字符串 'YYYY-MM-DD HH24:MI:SS' 格式。 * `TO_CHAR(TO_DATE('2002-08-26', 'YYYY-MM-DD'), 'DAY')` 将日期 '2002-08-26' 转换为星期几。 ...
SELECT TO_DATE('2007-11-02 13:45:25', 'yyyy-mm-dd hh24:mi:ss') FROM dual; ``` 二、TO_CHAR 函数 TO_CHAR 函数用于将 DATE 类型的日期时间数据转换为字符串类型。其基本语法为: ```sql TO_CHAR(date, format) ...
* 将字符串 '2007-11-02 13:45:25' 转换为日期类型:`TO_DATE('2007-11-02 13:45:25', 'yyyy-mm-dd hh24:mi:ss')` * 将字符串 '2004-05-07 13:23:44' 转换为日期类型:`TO_DATE('2004-05-07 13:23:44', 'yyyy-mm-dd ...
SELECT TO_DATE('2005-01-01 13:14:20', 'yyyy-MM-dd HH24:mm:ss') FROM dual; ``` 这是因为`mm`被解释为分钟,而`MM`也被解释为分钟,从而导致格式代码重复。解决办法是使用`mi`来表示分钟: ```sql SELECT TO_...
TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS CDATE FROM DUAL; 日期转换毫秒 SELECT TO_NUMBER(TO_DATE('2014-07-28 17:12:45', 'YYYY-MM-DD HH24:MI:SS') - TO_DATE('...
SELECT (TO_DATE(TO_CHAR(T2, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') - TO_DATE(TO_CHAR(T1, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS')) FROM test; ``` 以上就是从给定文件的信息中提炼...
例如,`'yyyy-MM-dd hh24:mi:ss'` 表示年份-月份-日期 小时:分钟:秒。 #### 二、会话级设置日期格式 在Oracle中,可以通过以下几种方法在会话级别设置日期格式: ##### 1. 使用 `ALTER SESSION` 命令 这是最常见...