如何在oracle-sqldeveloper中使用to_date函数来转换字符串
May 1 2019 12:00 to date数据类型?日期在SQL中也存储时间,
还是只存储约会?我试着用to_date函数
格式,但它总是删除时间部分。
如果时间不可能在日期数据类型,有什么可能是一个好的选择?
发布于 2022-06-06 18:00:30
您可以将日期转换为字符串(假设24小时值,这很可能是因为您没有AM/PM标记):
to_date('May 1 2019 12:00', 'Mon DD YYYY HH24:MI', 'nls_date_language=English')格式元素为在文件中。我已经为to_date()添加了可选的第三个参数,因为无论您的会话设置如何,您的月份名称都必须用英语进行解释。
它总是删除时间部分。
Oracle日期总是有日期和时间部分,即使时间设置为午夜。您可能会看到查询的结果是‘01-5月19日’。
日期没有任何内在的人类可读的格式;Oracle使用自己的内部表示形式,您通常不需要担心这个问题。
在大多数客户端和IDE中,会话格式设置用于将本机日期显示为字符串。由于历史原因,在数据库创建期间,尽管有Y2K,但仍然默认为DD-MON。它可以在数据库级别上进行更改,然后会话将继承它。但是,每个会话都可以覆盖它,例如,通过发出:
alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'您还可以通过to_char()调用显式地将日期值转换回字符串,并指定要包含的格式元素。只有在显示值时才这样做--如果要存储日期或将日期传递给函数,请始终将其作为正确的日期数据类型来执行,而不是作为字符串。(如果您必须将它们作为字符串传递到数据库之外,例如远程API,则通常需要使用ISO-8601格式)。
db<>fiddle显示默认输出,显式格式化为字符串(同样,仅用于显示--不要将日期存储或操作为字符串),并且会话格式已修改。
在sessions中,您还可以使用Tools->Preferences->Database->NLS并在那里更改“日期格式”,然后在创建新会话时应用该设置,而不必每次发出alter session。
https://stackoverflow.com/questions/72521448
复制相似问题