我的表中有一个字段,其数据类型为 Oracle 中的 DATE。 我想以 DD/MM/YYYY 格式将当前日期插入该字段。
我尝试了以下查询:
select to_date(to_char(sysdate,'dd/mm/yyyy'),'dd/mm/yyyy') from dual
但是它给出了
1/8/2011 12:00:00 AM.
我希望它插入并显示为
08/01/2011 12:00:00 AM.
有人可以帮我吗?
最佳答案
DATE
是 Oracle 中的内置类型,它以固定方式表示,您无法控制它。
所以:
I want it to insert [...] as 08/01/2011 12:00:00 AM
以上是无稽之谈。您不插入字符串,而是插入日期。
格式只有在你需要的时候才有用:
- 使用
TO_DATE
将字符串转换为日期的内部表示(格式掩码:如何解析字符串); - 使用
TO_CHAR
将日期的内部表示转换为字符串(格式掩码:如何呈现日期)。
基本上,在您的示例中,您采用 DATE,将其转换为具有某种格式的 STRING,然后将其转换回具有相同格式的 DATE。这是一个空操作。
现在,您的客户端显示什么:这是因为您的 Oracle 客户端不会直接显示 DATE 字段,NLS 层将转换任何选定的 DATE 字段。所以默认情况下它取决于您的语言环境。
您想要的是 SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;
它将显式执行转换并返回一个字符串。
当您想在数据库中插入日期时,可以使用 TO_DATE
或日期文字。
关于oracle - 如何在oracle中以dd/mm/yyyy格式将当前日期插入到DATE字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4633271/