oracle中如何设置年月日?

见一张表,想用年-月-日(如1983-05-01)来存储数据,定义这个字段为什么类型,如何设值其格式,用insert插入式需不需要将数值引起来,

这个问题在项目中是一个很重要的细节,具体有两种处理方式,主要取决于这个表是否需要进行数据交换,以及这个时间字段如何使用,具体举两个例子吧:

一、使用varchar2型
1、如果这张表对时间的精度要求不高,比如只是到日。
2、该表需要经常与其他表进行数据交互,比较,查询,并且其他表的时间精度不高于日(比如日、月、季度)
3、存储大量数据用于统计分析,如本期、同期,累计值等。

存储的时候需要格式化,例如:to_char(sysdate,'yyyy-mm-dd');

二、使用date型。
1、对时间精度要求较高,比如到秒;
2、需要与其他表做数据交互,更偏重于”准实时“交互,比如每15秒同步一次数据;
3、不用于统计分析(这点很重要,需要统计分析的话,强烈不建议使用date型);
4、该表数据不做物理删除(删除时只更新标志位和删除时间);

以上我这几年的实际项目经验,希望可以帮到你。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-24
设置成date字段类型,插入数据需这样:
insert into table (a) values (to_date('1983-05-01','yyyy-mm-dd'))本回答被提问者采纳
第2个回答  推荐于2016-01-28
如果你是想临时在你的会话中显示 用,则
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
则你的会话中涉及日期的值,会显示为 4位年-两位月-两位日 24小时:两位分钟:两位秒。
alter session set nls_date_format='yyyy-mm-dd';
则你的会话中涉及日期的值,会显示为 4位年-两位月-两位日。
如果是想让所有的用户在会话中均显示同一格式,则可以定义操作系统的环境变量
NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
比如,unix , linux 上,ksh 下,使用 export
NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
windows 上,在系统的环境变量中添加 .

oracle中如何设置年月日?
一、使用varchar2型 1、如果这张表对时间的精度要求不高,比如只是到日。2、该表需要经常与其他表进行数据交互,比较,查询,并且其他表的时间精度不高于日(比如日、月、季度)3、存储大量数据用于统计分析,如本期、同期,累计值等。存储的时候需要格式化,例如:to_char(sysdate,'yyyy-mm-dd');二...

请问oracle 在一个指定日期上加年或月,日怎么实现?
select sysdate+日 from dual select add_months(sysdate,月) from dual select add_months(sysdate,12*年) from dual

oracle 数据库日期格式怎么只要年月日
1、登录PL\/SQL。2、登录后,点击菜单栏,工具—首选项。3、左侧列表找到“日期\/时间”。4、可通过右侧的各种方式进行自定义的格式和自带的格式来进行修改,修改后点击“确定”按钮保存即可。

如何修改oracle数据库服务器的时间
1、右键开始菜单,选择控制面板。2、找到日期和时间,点击进入。3、点击更改日期和时间。4、进入后,修改日期时间,保存即可。linux下更改方法:1、以root用户登录到指定服务器。2、执行命令 date -s '2017-07-11 23:58:00'这是将系统时间修改为2017年7月11日23点58分00秒。3、修改后,reboot重...

oracle中如何将sysdate格式化为yyyy年mm月dd日?
SQL> SELECT 2 TO_CHAR(SYSDATE, 'YYYY"年"MM"月"DD"日"') A 3 FROM 4 dual;A --- 2013年03月27日 注:当格式字符串当中, 存在 自定义的字符信息的时候, 需要使用双引号, 标记那些, 直接显示,不需要额外处理的字符 ...

如何将Oracle 当前日期加一年一月一天一分钟
加一年:select add_months(sysdate,12) from dual加一个月:select add_months(sysdate,1) from dual加一天:select sysdate+1 from dual加一小时:select sysdate+1\/24 from dual

oracle 中 如何将年周(例如1502)转换为年月日(20150105)?
思路:先获取年份和周数,然后获取该年第一天是周几, 然后获取该年第一周的开始时间,然后加上(周数-1)*7,例子 with tmp as (select '1502' as a from dual union all select '1503' as a from dual union all select '1402' as a from dual union all select '0...

oracle时间格式问题
数据库所有日期或时间类型都是没有格式的,有格式只能是数字或字符串 从你的描述看出生年月日不太可能是数值类型,因为能改成yyyy-mm-dd格式只能是字符串 update 表 set 出生年月日= substr(出生年月日,1,4) || '-' || substr(出生年月日,5,2)|| '-' || substr(出生年月日,7)...

oracle中怎样将用sysdate获取的日期变成只有年月日的格式?
用TO_CHAR函数转成年月日的格式 例子:select to_char(sysdate,'yyyy-mm-dd') from dual;

Oracle中to_ date函数的用法?
4. trunk\/ ROUND函数的使用 select trunc(sysdate ,’YEAR’) from dual select trunc(sysdate ) from dual select to_char(trunc(sysdate ,’YYYY’),’YYYY’) from dual 5.oracle有毫秒级的数据类型 --返回当前时间 年月日小时分秒毫秒 select to_char(current_timestamp(5),’DD-MON...

相似回答