首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

请问oracle 10g 关于日期格式的有关问题

2012-03-03 
请教oracle 10g 关于日期格式的问题要实现一个根据日期来查询:insert表中的时候日期字典用的sysdate但是插

请教oracle 10g 关于日期格式的问题
要实现一个根据日期来查询:
insert表中的时候日期字典用的sysdate
但是插入的数据中间有中文,比如:2010-4-26 上午 20:22:22

这样的话,查询出来的这个字段和前天传过来要查询的日期就不能用"="来匹配

用的数据库是服务器上的的,在别人的机器上登录同样的库,查询出的结果没有中间的“上午”

请问是什么原因?

[解决办法]
日期格式的显示问题
执行查询之前 先执行
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
就好了
[解决办法]
插入数据的时候就转换成'yyyy-mm-dd hh24:mi:ss'


[解决办法]

SQL code
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';select sysdate from dual;
[解决办法]
SQL code
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
[解决办法]
SQL code
 
WORKGROUP\DINGJUN-PC>select sysdate from dual;

SYSDATE
--------------
27-4月 -10

WORKGROUP\DINGJUN-PC> select * from nls_session_parameters;

PARAMETER
                                        VALUE
------------------------------------------
------------------------------------------------------ -----------------------
------------------------------------------
---------------------------------------------------------------------------
NLS_LANGUAGE
                                        SIMPLIFIED CHINESE
NLS_TERRITORY
                                        CHINA
NLS_CURRENCY
                                        ¥
NLS_ISO_CURRENCY
                                        CHINA
NLS_NUMERIC_CHARACTERS
                                        .,
NLS_CALENDAR
                                        GREGORIAN
NLS_DATE_FORMAT
                                        DD-MON-RR
NLS_DATE_LANGUAGE
                                        SIMPLIFIED CHINESE
NLS_SORT
                                        BINARY
NLS_TIME_FORMAT
                                        HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT
                                        DD-MON-RR HH.MI.SSXFF AM

PARAMETER
                                        VALUE


------------------------------------------
------------------------------------------------------ -----------------------
------------------------------------------
---------------------------------------------------------------------------
NLS_TIME_TZ_FORMAT
                                        HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT
                                        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY
                                        ¥
NLS_COMP
                                        BINARY
NLS_LENGTH_SEMANTICS
                                        BYTE
NLS_NCHAR_CONV_EXCP
                                        FALSE

已选择17行。

WORKGROUP\DINGJUN-PC>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

会话已更改。

WORKGROUP\DINGJUN-PC>select sysdate from dual;

SYSDATE
-------------------
2010-04-27 08:56:29

WORKGROUP\DINGJUN-PC>select to_char(sysdate,'yyyy-mon-dd') from dual;

TO_CHAR(SYSDATE,'YYYY-MON-DD')
--------------------------------
2010-4月 -27

WORKGROUP\DINGJUN-PC>select to_char(sysdate,'yyyy-mm-dd') from dual;

TO_CHAR(SYSDATE,'YYY
--------------------
2010-04-27

WORKGROUP\DINGJUN-PC>alter session set nls_date_language='American';

会话已更改。

WORKGROUP\DINGJUN-PC>select to_char(sysdate,'yyyy-mon-dd') from dual;

TO_CHAR(SYSDATE,'YYYY-MON-DD')
----------------------------------------
2010-apr-27



[解决办法]
那是plsql的问题,设置首选项 ---用户界面----日期时间
[解决办法]
to_char(sysdate,'yyyy-mm-dd hh:mi:ss')可以转换,或者设置时间显示格式
[解决办法]
如果数据库字段存储的是日期,而不是字符
并且把传入的数据转换成日期进行比较,
用=又为何不可?
[解决办法]
因为当时如果用sysdate插入的,则数据库中存储的日期可能精确到了毫秒或者微秒级别,所以无法用=,最好转换完成您需要的时间精度再进行比较,比如年月日则可以比较某一天的。
[解决办法]
date类型只到秒
LZ自己的提问就有问题

热点排行