Oracle 将时间戳转换为日期

汤姆

我有这样的约会:

2020/05/09T02:40:03
2020/05/16T02:40:03
2020/05/15T02:40:03

我需要将其转换为日期格式“dd/mm/yyyy”。

我的查询

select cast(date_registered as date) as Reg_date from employee

错误:

Literal does not match format string

Note:I have also used TO_Char , TO_Date but not working
MT0

在 Oracle 中,日期数据类型始终存储为 7 个字节,包括世纪、世纪年、月、日、时、分和秒;因此,要求将具有年份到秒分量的内容转换为日期不需要您执行任何操作:

SELECT date_registered AS reg_date FROM employee

现在,如果您要存储date_registered为字符串数据类型而不是日期数据类型,那么您需要使用TO_DATE以下方法进行转换

SELECT TO_DATE( date_registered, 'YYYY-MM-DD"T"HH24:MI:SS' ) AS reg_date
FROM   employee

但是,您不应该这样做,您应该解决将日期存储为字符串而不是日期的潜在问题。您可以通过转换列的数据类型来解决这个问题:

ALTER TABLE employee ADD ( date_registered2 DATE );
UPDATE employee
  SET date_registered2 = TO_DATE( date_registered, 'YYYY-MM-DD"T"HH24:MI:SS' );
ALTER TABLE employee DROP COLUMN date_registered;
ALTER TABLE employee RENAME COLUMN date_registered2 TO date_registered;

(注意:下面的查询假设您已经“固定”了表格,以便该date_registered列具有日期数据类型;如果您不想这样做,那么您还需要包括TO_DATE转换。)

如果您希望输出是时间部分被截断回午夜的日期,则:

SELECT TRUNC( date_registered ) AS reg_date
FROM   employee

(注意:显示的日期仍然会有小时、分钟和秒部分,但它们在通过后都为零TRUNC。)

如果您希望它采用特定格式,而没有时间组件,则需要使用以下命令将其输出为格式化字符串(因为日期数据类型没有关联的格式)TO_CHAR

SELECT TO_CHAR( date_registered, 'DD/MM/YYYY' ) AS reg_date
FROM   employee

db<>在这里摆弄

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章