当前位置: 首页 > 知识库问答 >
问题:

TO_DATE为不同的格式掩码返回不同的日期?

景令秋
2023-03-14
 select to_date(sysdate, 'DD MONTH YYYY') , to_date(sysdate, 'yyyy/mm/dd hh24:mi:ss')
 from dual where 
 to_date(sysdate, 'DD MONTH YYYY') < to_date(sysdate, 'yyyy/mm/dd');

1)to_date(sysdate,'dd MONTH yyyyy')这将给出没有时间的日期对象(可能是时间为00:00)。
我正确吗?如果不正确,我将如何只获得没有时间的日期对象?
2)从上面的查询来看,似乎_Date(sysdate,'yyyy/mm/dd')大于to_date(sysdate,'dd MONTH yyyyy')。为什么??



更新

1)我在上面的URL中的目的是找出to_date函数将只返回日期(或随时间),尽管格式'dd MONTH yyyyy'没有提到其中的时间字符(HH:mm.)。
2)从我得到的响应来看,to_date将总是随时间返回日期,尽管我们没有提到时间字符。
3)最后,为了只获得日期,我们应该使用trunc()/to_date(to_char(sysdate,'mm-dd-yyyy'),'mm-dd-yyyy')

检查下面

select to_char(trunc(sysdate), 'yyyy/mm/dd hh24:mi:ss'), 
to_char(to_date(to_char(sysdate, 'yyyy-MM-dd'),'yyyy/mm/dd hh24:mi:ss'),'yyyy/mm/dd hh24:mi:ss') 
from dual;

-->HH24:24对于获取00:00格式很重要。

共有1个答案

窦涵忍
2023-03-14

你刚刚搬起石头砸自己的脚。它被称为隐式数据类型转换。

没有to_date(date)(这正是您所要求的),因此oracle已将查询转换为to_date(TO_CHAR(sysdate),'dd MONTH yyyyy'),其中TO_CHAR(sysdate)将获取默认的NLS格式掩码。根据您的默认掩码(请参见NLS_SESSION_PARAMETERS),第一个掩码可能已解析为0012年,第二个掩码可能已解析为0018年。所以0012小于0018。

如果要截断sysdate,只需执行trunc(sysdate)

 类似资料:
  • 我有一个python脚本,它将我的一些约会同步到两个不同的谷歌账户,两个账户都有一个谷歌日历,显然设置相同(时区设置也相同),在调用下载约会列表的时候然而,在日历上,调用返回具有不同日期格式的约会,具体取决于我要查询的日历。 使用的库是google开发的库(使用的Python版本是3.6) 脚本(在两种情况下都在同一台计算机上运行)如下所示: 我想这是一些关于日历配置的问题,但是我在设置中没有找到

  • 我有两个字符串格式的日期:说,格式为。比较日期1和日期2的相等性的最佳方法是什么?我不关心时间,只关心日、年、月。我应该将它们转换为即时并进行比较吗?

  • 我正在使用Microsoft Graph Users API根据我们的ActiveDirectory验证用户名或电子邮件地址列表。名称搜索: https://graph.microsoft.com/v1.0/me/people/?$search=John.Smith 返回其他数据,如和。但如果我使用电子邮件搜索: null 我是否需要额外的权限来获取相同的数据? 更新:我按照下面的建议在https

  • 这两个命令中的任何一个都应该生成一个json文件,但实际上我得到的是一个html文件。

  • 我试图将paralleStream与自定义的ForkJoin池一起使用,该任务执行网络调用。当我使用以下样式时 如果使用parallelStream,那么ForkJoinPool.Common是否以某种方式参与其中?下面是模拟上述两种样式的整个程序

  • 我在ES7.8中创建了一个日期格式为“YYYY-MM-DD”的索引。 然而,当我点击地图上的“基线”字段时,在Filter上传递的实际值是yyyy-mm-dd00:00:00.000z。 有没有人可以建议一下,我怎样才能在过滤器中得到正确的日期格式“YYYY-MM-DD”? 多谢了。 下面是请求中的示例文档 “命中”:[{“_index”:“program_b”,“_type”:“_doc”,“_