Sql 我们可以从只存储日期而不存储时间的日期列中提取时间吗?
我有一个带有列date(datecreated)和示例数据2.10.2017的表 所以我想知道插入数据的时间,但我只存储日期而不是时间。Sql 我们可以从只存储日期而不存储时间的日期列中提取时间吗?,sql,oracle,date,oracle12c,Sql,Oracle,Date,Oracle12c,我有一个带有列date(datecreated)和示例数据2.10.2017的表 所以我想知道插入数据的时间,但我只存储日期而不是时间。 我可以提取时间吗?Oracle中的日期类型也包括小时、分钟等。因此,除非插入时将其截断,否则它将被存储。但在默认设置中,一些客户端不显示它们 试一试 获取年、月、日、小时、分钟和秒的时间。Oracle中的日期类型也包括小时、分钟等。因此,除非在插入时截断,否则它将被存储。但在默认设置中,一些客户端不显示它们 试一试 要获取年、月、日、小时、分钟和秒的时间,时间
我可以提取时间吗?Oracle中的日期类型也包括小时、分钟等。因此,除非插入时将其截断,否则它将被存储。但在默认设置中,一些客户端不显示它们 试一试
获取年、月、日、小时、分钟和秒的时间。Oracle中的日期类型也包括小时、分钟等。因此,除非在插入时截断,否则它将被存储。但在默认设置中,一些客户端不显示它们 试一试
要获取年、月、日、小时、分钟和秒的时间,时间组件肯定在那里,您可以使用to_CHAR查看它:
SELECT TO_CHAR(DATECREATED, 'DD-MON-YYYY HH24:MI:SS')
FROM YOUR_TABLE;
但是,如果未设置创建记录的时间,则小时、分钟和秒字段都应为零。换句话说,如果你做了类似的事情
INSERT INTO YOUR_TABLE (DATECREATED) VALUES (TO_DATE('09-OCT-2010', 'DD-MON-YYYY'));
日期的时间成分将为零
时间组件肯定在那里,您可以通过使用TO_CHAR来查看它:
SELECT TO_CHAR(DATECREATED, 'DD-MON-YYYY HH24:MI:SS')
FROM YOUR_TABLE;
但是,如果未设置创建记录的时间,则小时、分钟和秒字段都应为零。换句话说,如果你做了类似的事情
INSERT INTO YOUR_TABLE (DATECREATED) VALUES (TO_DATE('09-OCT-2010', 'DD-MON-YYYY'));
日期的时间成分将为零
这是一个常见的误解-日期数据类型始终包含年(2字节)、月、日、小时、分钟和秒(每个字节1字节)。它永远不会只存储年/月/日组件 但是,如果您没有向Oracle提供有关时间组件的任何信息,则Oracle会将这些组件的默认值设置为零 因此,如果你这样做:
CREATE TABLE table_name ( value DATE );
INSERT INTO table_name
SELECT DATE '2018-01-01' FROM DUAL UNION ALL
SELECT CAST( TIMESTAMP '2018-10-04 08:20:14' AS DATE ) FROM DUAL;
然后:
产出:
FORMATTED DMP HR
------------------- ---------------------------------- --
2018-01-01T00:00:00 Typ=12 Len=7: 120,118,1,1,1,1,1 0
2018-10-04T08:20:14 Typ=12 Len=7: 120,118,10,4,9,21,15 8
表明时间成分存在;您可以使用TO_CHAR
或extract
函数提取它们;如果不指定值,则默认为零
我只储存日期,不储存时间。对我来说,抽出时间是可能的
否,如果未指定时间,则Oracle会将日期值的小时、分钟和秒默认为00:00:00
如果您使用
SYSDATE
(或类似工具)插入日期,则它将具有非零时间组件,并且时间组件不会显示在您的用户界面上,您可以使用来,等,以覆盖用户界面的默认日期格式并获取信息。这是一个常见的误解-日期总是包含年(2字节)、月、日、小时、分钟和秒(每个1字节)。它永远不会只存储年/月/日组件
但是,如果您没有向Oracle提供有关时间组件的任何信息,则Oracle会将这些组件的默认值设置为零
因此,如果你这样做:
CREATE TABLE table_name ( value DATE );
INSERT INTO table_name
SELECT DATE '2018-01-01' FROM DUAL UNION ALL
SELECT CAST( TIMESTAMP '2018-10-04 08:20:14' AS DATE ) FROM DUAL;
然后:
产出:
FORMATTED DMP HR
------------------- ---------------------------------- --
2018-01-01T00:00:00 Typ=12 Len=7: 120,118,1,1,1,1,1 0
2018-10-04T08:20:14 Typ=12 Len=7: 120,118,10,4,9,21,15 8
表明时间成分存在;您可以使用TO_CHAR
或extract
函数提取它们;如果不指定值,则默认为零
我只储存日期,不储存时间。对我来说,抽出时间是可能的
否,如果未指定时间,则Oracle会将日期值的小时、分钟和秒默认为00:00:00
如果您使用SYSDATE
(或类似)插入日期,则它将具有非零时间组件,并且时间组件不会显示在您的用户界面上。您可以使用to_CHAR
等来覆盖用户界面的默认日期格式并获取信息。使用trunc(datecreated)
。使用trunc(datecreated)
。