如何将oracle的date型字段默认值设置成具体的时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将oracle的date型字段默认值设置成具体的时间相关的知识,希望对你有一定的参考价值。
我想将oracle的一个date型字段设置成具体的值,如2099-12-21 23:59:59
该如何操作啊?注意不是用sysdate获取系统时间。
可以设置的,在表结构编辑时默认值那边可以编辑,可以设置成sysdate,系统当前时间
如果是用语句创建表时,则在类型后面添加:default sysdate就可以
如
create table usertable
(id number,
name varchar2(100),
createdate date default sysdate); 参考技术A 如果是想将表中记录的时间显示成这个格式就用 to_char()
select to_char(字段名,'yyyy-mm-dd hh24:mi:ss') from 表名;
如果是想将某个时间insert到这个字段就用 to_date()
insert into 表名 (字段) values (to_date(时间值,'yyyy-mm-dd hh24:mi:ss'));本回答被提问者采纳
MySQL:将字段默认值设置为其他列
【中文标题】MySQL:将字段默认值设置为其他列【英文标题】:MySQL: set field default value to other column 【发布时间】:2013-03-01 08:03:16 【问题描述】:如何将字段的默认值设置为 MySQL 中的其他列?
我在Oracle中用虚拟字段做过,但我不知道如何在MySQL中做。
这是我的桌子:
CREATE TABLE TSM_TRANSACTION_TBL
(
TRANS_ID INT primary key auto_increment,
LOCATION_ID INT,
TRANS_DATE DATE,
RESOURCE_ID INT,
TS_ID INT,
MAX_VALUE INT,
BOOKED_UNITS INT default 0,
REMAINING INT default MAX_VALUE - BOOKED_UNITS,
BOOKED INT not null,
USER_ID INT,
TRANS_TIME TIMESTAMP
);
【问题讨论】:
可能重复:***.com/questions/6377977/… 【参考方案1】:如Data Type Default Values 中所述:
数据类型规范中的
DEFAULT <strong><em>value</em></strong>
子句表示列的默认值。除了一个例外,默认值必须是一个常量;它不能是函数或表达式。这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()
或CURRENT_DATE
。例外情况是您可以将CURRENT_TIMESTAMP
指定为TIMESTAMP
列的默认值。见Section 11.3.5, “Automatic Initialization and Updating forTIMESTAMP
”。
相反,您可以定义一个插入触发器:
CREATE TRIGGER foo BEFORE INSERT ON TSM_TRANSACTION_TBL FOR EACH ROW
IF NEW.REMAINING IS NULL THEN
SET NEW.REMAINING := NEW.MAX_VALUE - NEW.BOOKED_UNITS;
END IF;;
【讨论】:
我使用了你的代码,但它告诉我我不能在插入后使用 new 并且我将其更改为之前并且它工作正常 对于那些最近检查过的人,MySQL 现在允许 DEFAULT 子句 dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html 的函数【参考方案2】:“新”对于 AFTER 插入触发器是不可接受的。您应该通过 BEFORE 插入触发器执行“字段更新”。所以,
CREATE TRIGGER foo BEFORE INSERT ON TSM_TRANSACTION_TBL FOR EACH ROW
IF NEW.REMAINING IS NULL THEN
SET NEW.REMAINING := NEW.MAX_VALUE - NEW.BOOKED_UNITS;
END IF;;
【讨论】:
我修复了@eggyal 的答案以上是关于如何将oracle的date型字段默认值设置成具体的时间的主要内容,如果未能解决你的问题,请参考以下文章