Oracle存储过程中如何将字符串转化成日期类型?

  • 回答数

    4

  • 浏览数

    726

人心隔肚皮
首页 > 计算机类考试 > Oracle存储过程中如何将字符串转化成日期类型?

4个回答 默认排序
  • 默认排序
  • 按时间排序

秋比特

已采纳
1分钟前发布 -【Oracle存储过程中如何将字符串转化成日期类型?】http://www.sdrsks.org/ask 09月24日讯: Oracle存储过程中如何将字符串转化成日期类型?可以使用to_date方法将字符串转换为date类型:示例:SQL> select to_date(to_char(sysdate,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss') into fTime from dual;执行结果:2015-11-06 22:20:27。备注:存储过程中的用法也是这样的,没有任何区别。SELECT to_date(to_char(sysdate-1,'yyyy-mm-dd')||' 23:59:59','yyyy-mm-dd hh24:mi:ss') INTO END_TIME FROM DUAL;
4 评论

俗了清风

已采纳
用SQL创建表限制年龄,怎么限制?在Oracle数据库中,可以利用Create Table语句中嵌套子查询来实现基于已有的表或者视图来创建新表。这个功能可能对于大部分用户来说,不会感到陌生。但是在使用这个语句的过程中,需要遵循哪些限制条件呢?对于这一点,可能不少数据库管理员没有一个清晰的认识。为此,笔者就在这里给大家总结一下,利用查询来创建表时需要遵守的一些限制。限制条件一:不能够改变数据类型与长度。在利用子查询来创建新表的时候,数据库管理员可以修改新表中列的名称,但是不能够修改列的数据类型和长度。新表中所有列的数据类型和长度必须与查询列一致。如数据库管理员从一个员工信息表中获取员工姓名、员工出生日期等信息创建一个新表。如果在员工信息表中员工出生日期是一个日期型的字段,那么在新表中就必须也是日期型的数据类型。在创建新表的过程中,数据库管理员不能够修改数据类型。那么如果系统管理员需要更改数据类型,如想把日期型的数据调整为字符型的数据,难道就没有其他办法了吗?其实,通过一些其他方法,这个需求仍然可以实现。上面的限制条件说,新表中的数据类型必须与查询列中的数据类型相同,而不是说跟基表中的数据类型相同。为此如果数据库管理员想要把日期型的数据(基表中的数据类型)调整为字符型的数据类型(新表中的数据类型),那么只需要在查询语句中,利用日期字符转换函数,将日期型的数据转换为字符型的数据即可。在创建新表时,数据类型是以查询列为准,而不是以基表中列的数据类型为准。所以通过在查询语句中使用数据类型转换函数,就可以改变新表中的数据类型。限制条件二:不能够复制约束条件与列的默认值。在基表中,可能某些字段有约束条件,如唯一性约束等等。某些字段也可能设置了默认值,如系统的当前时间等等。但是,如果利用子查询来创建信标的话,那么这些字段的约束条件、默认值等等都不会在新表中体现出来。也就是说,这些内容需要数据库管理员在新表创建后手工重新建立。如果有需要的话,要对照基表的约束条件与默认值,分别在新表的字段中进行定义。这个没有取巧的方法。至少到限制为止,笔者还没有找到可以利用其他方法来突破这个限制。为此数据库管理员在利用子查询来创建这个新表的时候,要特别注意这个约束条件。特别是默认值,不少管理员在利用这个方法创建新表后,会忘记重新设置相关列的默认值。限制条件三:不能够为新表指定表空间。在正常情况下,利用Create创建表的时候,数据库管理员可以为表指定其所属的表空间。如果不指定的话,则其默认情况下采用的是当前用户的默认表空间。但是在使用查询来创建新表的时候,在语句中不能够为新表指定表空间。如使用TableSpace关键字为其指定表空间的话,则系统会提示错误信息:SQL命令未正确结束。注意这并不是说这个SQL语句哪里有问题,而是指不能够在这种方式下为新表指定表空间。从这里也可以看出,Oracle数据库系统的错误提示还是有模棱两可的地方,还需要改进,即错误信息要能够反映出真实的问题所在。因为不能够为新表指定表空间,此时其所属的表空间就是执行这条语句的用户的默认表空间。那么数据库管理员就可以通过采用不同的用户来为新表指定所属的表空间。如现在数据库管理员要想把这个新表放置在sales表空间下。那么就可以新建一个用户或者利用原有的用户,先把这个用户的默认表空间设置为sales。然后再利用这个用户来执行这条语句(必要的时候可能需要调整这个用户的权限)。通过这种方式就可以控制这种形式创建新表所属的表空间。俗话说,条条道路通罗马。既然不能够利用直接的方式来为这新表设定表空间,那么就只能够采取这曲线救国的方法了。只要最终能够达到预计的目的就好。限制条件四:某些数据类型的数据不能够导入。如果在查询结果中,带有大对象数据类型或者Long数据类型的数据,则这个语句就会执行不成功。换句话说,如果采用子查询来创建新表,则在Select语句中就不能够包含大对象数据类型或者Long数据类型。这是Oracle数据库的一种强制性规定。如果确实需要这些数据的话,则可以采用其它的方式来解决。如先不导入这些类型的数据。先利用子查询把表建立起来。等新表建立完成后。再利用Update关键字结合子查询来更新这些列的数据即可。虽然这么操作比较麻烦一点,但是总比不能够实现要好。在使用这种方法创建新表时,除了要注意上面这些限制条件之外,最好再掌握下面这些技巧。这有助于提高通过查询来创建新表的利用价值。技巧一:使用Nologging选项提高建表效率。Nologging这个可选项相信大部分数据库管理员都知道其作用。但是到真的需要用到这个选项时,很多人就忘记了。这个选项主要是用来控制重做日志的。即在对数据库进行相关的操作时,是否需要日志文件中写入相关的记录。因为日志文件是一把双刃剑。一方面王日志文件中记录所有的操作,有利于数据库的安全。当出现一些错误的操作时,可以通过恢复事务日志挽回损失。另一方面,由于数据库同时需要更新数据、更新事务日志信息,为此当对数据库进行大批量的操作时,就会降低这个操作的性能,延长时间。通过查询来创建新表是也遇到了类似的问题。因为在利用子查询创建新表时,如果不采用这个选项的话,则在新表中每插入一条记录都将会产生重做日志信息,这会占用额外的空间与时间。如果插入的记录比较多的话,这会给数据库的正常运行带来很大的负面影响。在大部分情况下,笔者建议使用Nologging选项来节省创建新表的时间。因为通过子查询来创建新表,基本上不会对基表的内容产生任何不利的影响。所以即使不用重做日志,也不会带来多大的风险。换句话话说,此时投入与产出不成正比。也就是说,此时牺牲性能,来换取所谓的安全,是不值得的。因为不影响其它表的数据,所以风险基本上就谈不上。在这种情况下,采用Nologging选项,让数据库在创建记录的时候,不往事务日志中记录信息,以缩短创建新表的时间。笔者认为这是非常明智的做法。技巧二:利用查询来创建表结构,不导入数据。有时候我们需要复制表的结构,而不需要复制数据。在PL Developer开发工具中,可以直接复制某张表。但是这么操作的话,除了会复制表的结构外,还会把相关的数据都复制过去。显然,这不符合我们的要求。而表中的纪录比较多的时候,这个复制作业就会占用比较长的时间与数据库服务器的资源,会给数据库的性能带来不利的影响。那么是否有方法,可以只复制表的结构,而不导入任何数据呢?在谈这个解决方案之前,大家先来回顾一下Select语句。在使用Select语句中,可以带Where条件语句。如果要查询的记录没有一条记录符合Where条件中规定的限制条件时,则在显示窗口,仍然会显示要查询的各个列的名称。但是不会显示任何一条记录。现在要复制表的结构,而不需要导入任何数据,就可以参考这种实现机制来完成。其实要实现这个需求的话,数据库管理员就可以利用通过查询来创建新表的方法。如先利用Select语句将相关的列等结构查询出来,然后再在Where查询语句中,设置一些根本不存在的条件。如此的话,最终的新表中就只有表的结构,而没有任何基础表中的纪录。可见,虽然通过子查询来创建新表是一项比较强大的功能,可以实现一些复杂的管理需求。但是在使用这个功能的时候,上面对这些限制条件数据库管理员要铭记在心。否则的话,很可能在使用这项功能的时候,四处碰壁;或者最后竹篮子打水一场空。
16 评论

花凋棋散

已采纳
数据库如何设置时间地址?Oracle:Oracle数据库使用sysdate函数来获取当前时间,执行语句:select sysdate from dual即可。2/62Mysql数据库与Oracle数据库相似,使用sysdate()来获取当前时间,执行语句:select sysdate(),一定注意加上括号3/63对于Gbase数据库,其与Mysql数据库在获取当前时间上相同,执行语句:select sysdate()4/64 db2数据库略有不同,在获取当前时间上,使用如下的查询sql:SELECT current timestamp FROM sysibm.sysdummy15/65通常,我们在获取当前时间后,还想获得当前时间往前或者往后推一段时间的日期,对于oracle数据库,当前时间往前推一天: select sysdate-1 from dual6/66对于sysbase数据库,其获取当前时间的函数是:select getdate(),由于没有装客户端,仅介绍函数。
80 评论

青春的浮華

已采纳
什么叫数据库有效性验证?数据库有效性验证,就是采用多通道并行的保护模式,并辅以参数方面的优化,可以成倍提升传输速度和存储的读写性能来提升备份恢复性能。在数据呈指数增长的时候,我们也能够快速的完成数据的备份,以及恢复的验证工作。对于超大型Mysql/Oracle数据库的保护一直是业界的难题,尤其是如何在较短的时间内,完成数据的备份和有效性验证。
13 评论

相关问答

  • 数据库服务器怎么配置?

    数据库服务器怎么配置?选择数据库服务器的五个原则:1)高性能原则保证所选购的服务器,不仅能够满足运营系统的运行和业务处理的需要,而且能够满足一定时期业务量的增长。一般可以根据经验公式计算出所需的服务器TpmC值(Tpmc是衡量计算机系统的事务处理能力的程序),然后比较各服务器厂商和TPC组织公布的TpmC值,选择相应的机型。同时,用服务器的市场价/报价除去计算出来的TpmC值得出单位TpmC值的价

    一万个舍不得 4人参与回答 2024-09-24
  • oracle插入date类型的数据有的有时分秒?

    oracle插入date类型的数据有的有时分秒?需要用to_date,将字符转换成日期:to_date('2013-02-1821:57:00','yyyy-mm-ddhh24:mi:ss')比如:insertintotable(col1,datecol)values(1,to_date('2013-02-1821:57:00','yyyy-mm-ddhh24:mi:ss'))

    ECHO 处于关闭状态。 4人参与回答 2024-09-24
  • 计算机科学与技术专业要考研的话,哪些学校比较好?

    计算机科学与技术专业要考研的话,哪些学校比较好?计科考研专业课有数据结构,计算机组成原理,计算机网络和操作系统。具体要看你要考的学校考什么,最多就是这四科了。 考研的时候一般要求程序用C/C++写,一定要熟练。另外,在复试的时候有些学校还会考一些其他的科目。譬如西南交大会考微机原理与接口技术,郑州大学考数据库,所以要事先去了解

    夏天的味道 4人参与回答 2024-09-24
  • 2021年中级医师职称考试时间?

    2021年中级医师职称考试时间?2021年医师中级考试时间是:4月10日、11日、17日、18日,具体考试时间以考试前打印的准考证为准。

    旧城 4人参与回答 2024-09-24
  • Access中如何计算两个日期相差的天数?

    Access中如何计算两个日期相差的天数?一、1、首先我们点击Access的菜单,然后点击新建选项,新建一个空白的桌面数据库,如下图所示2、然后我们在数据库中设计一个表,如下图所示,只需要一个日期即可3、接下来我们往数据表中插入一些记录,日期尽量选择不同的时间段的,如下图所示4、我们查询表的记录的话往往按照如下图所示的方式进行即可5、这个时候我们添加一个DateDiff函数,将注册日期和某个时间进

    那年夏天我们依然在微笑 4人参与回答 2024-09-24