如何在oracle中以dd / mm / yyyy格式将当前日期插入DATE字段

问题描述 投票:2回答:4

我的表中有一个字段,数据类型为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.

请问有人帮我吗?

oracle date timestamp date-format
4个回答
15
投票

DATE是Oracle中的内置类型,它以固定的方式表示,您无法控制它。

所以:

我希望它插入[...]作为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或日期文字。


2
投票

或者,如果要检索DATE字段的日期部分,可以使用truncate,即

select to_char(trunc(sysdate),'dd/mm/yyyy') from dual;

1
投票

当列为DATE类型时,您可以使用以下内容:

Insert into your_table(your_date_column) Select TRUNC(SYSDATE) from DUAL;

这将从SYSDATE中删除时间部分。


-2
投票

也许这可以帮助

insert into pasok values ('&kode_pasok','&kode_barang','&kode_suplier',
to_date('&tanggal_pasok','dd-mm-yyyy'),&jumlah_pasok);

注意:'&'帮助我们再次插入数据,插入/结束比输入再插入示例:输入kode_pembelian的值:BEL-E005输入kode_barang的值:ELK-02输入kode_customer的值:B-0001 old 2:' &kode_pembelian','&kode_barang','&kode_customer',new 2:'BEL-E005','ELK-02','B-0001',输入tanggal_pembelian的值:24-06-2002输入jumlah_pembelian的值:2 old 3 :to_date('&tanggal_pembelian','dd-mm-yyyy'),&jumlah_pembelian)new 3:to_date('24 -06-2002','dd-mm-yyyy'),2)

已创建1行。

SQL> /(输入)

© www.soinside.com 2019 - 2024. All rights reserved.