现在想用sysdate作为id。
insert into xxx (id,xxx,xxx)values (sysdate,xxx,xxx);
请问大神,怎么把sysdate转换成number类型的,放在一条语句中插入数据库,能做到吗?
对数据库不是很熟,求教。
11 个解决方案
#1
select to_number(to_char(sysdate,'yyyymmddhh24miss')) from dual
如果同一秒插入两条,会报错。
如果同一秒插入两条,会报错。
#2
干嘛不用系列
#3
用时间+系列做ID,满足你要求不
#4
用序列 + 触发器吧。这个是常用的方法。
#5
推荐还是用序列加触发器
#6
对方的数据库是个短信网关,我们只能插入一条,我们的设备只能插入一条,无法使用触发器,有什么办法解决么?
#7
用TIMESTAMP
#8
完全可以做到。
#9
使用to_char+to_timestamp_tz+timestamp_to_scn就可以实现将date类型直接转换成number类型。
而且生成出来的数字是唯一的。
SQL> select timestamp_to_scn(to_timestamp_tz(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),
2 'yyyy-mm-dd hh24:mi:ss')) as num_dt
3 from dual;
NUM_DT
----------
1468501
而且生成出来的数字是唯一的。
#10
#11
这么做感觉和时间没关系了,估计不是他想要的吧
#1
select to_number(to_char(sysdate,'yyyymmddhh24miss')) from dual
如果同一秒插入两条,会报错。
如果同一秒插入两条,会报错。
#2
干嘛不用系列
#3
用时间+系列做ID,满足你要求不
#4
用序列 + 触发器吧。这个是常用的方法。
#5
推荐还是用序列加触发器
#6
对方的数据库是个短信网关,我们只能插入一条,我们的设备只能插入一条,无法使用触发器,有什么办法解决么?
#7
用TIMESTAMP
#8
完全可以做到。
#9
使用to_char+to_timestamp_tz+timestamp_to_scn就可以实现将date类型直接转换成number类型。
而且生成出来的数字是唯一的。
SQL> select timestamp_to_scn(to_timestamp_tz(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),
2 'yyyy-mm-dd hh24:mi:ss')) as num_dt
3 from dual;
NUM_DT
----------
1468501
而且生成出来的数字是唯一的。
#10
#11
这么做感觉和时间没关系了,估计不是他想要的吧