如何将时间插入 DATE 类型?
How to insert time into a DATE type?
我使用 TO_DATE 函数插入了一个元组,但当我进行查询时结果是 '05/01/2015'。没有显示时间。有什么不对吗?
INSERT INTO course_section VALUES(1,'MWF',TO_DATE('10:00:00 A.M.','HH:MI:SS A.M.'));
如何解决?
就在那里。 DATE
列实际上是一个日期和时间,精确到秒。如果您不指定日期部分,则默认为当月的第一天。
显示日期的默认 Oracle 格式是 DD-MON-RR
,即 天数/月短名称/世纪翻转的年份。
要获取时间,请使用 TO_CHAR
函数指定自定义格式。要使用 24 小时制查看您的时间,请执行以下操作(其中 x
是您的日期列):
SELECT TO_CHAR(x, 'HH24:MI:SS') FROM course_section;
要使用 AM/PM 的 12 小时制查看您的时间,请执行以下操作:
SELECT TO_CHAR(x, 'HH:MI:SS AM') from course_selection;
或者您可以在格式字符串中使用PM
代替AM
;无论哪种方式,你都会得到相同的结果:
SELECT TO_CHAR(x, 'HH:MI:SS PM') FROM course_selection;
将 NLS_DATE_FORMAT 设置为您的程序或会话的规格
例如在SQL*Plus,添加到login.sql
更改会话集 NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
对于 SQL 开发人员,在首选项 > 数据库 > NLS 中设置
在编写应用程序代码时,如果您想强制使用特定的日期格式,使用 TO_CHAR 是个不错的选择。
我使用 TO_DATE 函数插入了一个元组,但当我进行查询时结果是 '05/01/2015'。没有显示时间。有什么不对吗?
INSERT INTO course_section VALUES(1,'MWF',TO_DATE('10:00:00 A.M.','HH:MI:SS A.M.'));
如何解决?
就在那里。 DATE
列实际上是一个日期和时间,精确到秒。如果您不指定日期部分,则默认为当月的第一天。
显示日期的默认 Oracle 格式是 DD-MON-RR
,即 天数/月短名称/世纪翻转的年份。
要获取时间,请使用 TO_CHAR
函数指定自定义格式。要使用 24 小时制查看您的时间,请执行以下操作(其中 x
是您的日期列):
SELECT TO_CHAR(x, 'HH24:MI:SS') FROM course_section;
要使用 AM/PM 的 12 小时制查看您的时间,请执行以下操作:
SELECT TO_CHAR(x, 'HH:MI:SS AM') from course_selection;
或者您可以在格式字符串中使用PM
代替AM
;无论哪种方式,你都会得到相同的结果:
SELECT TO_CHAR(x, 'HH:MI:SS PM') FROM course_selection;
将 NLS_DATE_FORMAT 设置为您的程序或会话的规格
例如在SQL*Plus,添加到login.sql
更改会话集 NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
对于 SQL 开发人员,在首选项 > 数据库 > NLS 中设置
在编写应用程序代码时,如果您想强制使用特定的日期格式,使用 TO_CHAR 是个不错的选择。