当前位置: 首页 > 面试题库 >

Oracle to_date SQL格式问题,

胥良平
2023-03-14
问题内容

我正在将时间戳字段格式化为“ DD / MM / YYYY”格式,以获取该日期的所有已处理记录。

select count(*) from task_log where to_date (event_dt,'DD/MM/YYYY')= to_date('19/05/2015','DD/MM/YYYY');

上面的查询返回0计数。

select count(*) from task_log where to_date (event_dt,'DD/MM/YYYY')= to_date('19/05/0015','DD/MM/YYYY');

上面的查询返回29个计数。

如果我运行:

select event_dt from task_log where to_date (event_dt,'DD/MM/YYYY')= to_date('19/05/0015','DD/MM/YYYY');
EVENT_DT
5/19/2015 9:35:23 AM
5/19/2015 9:35:23 AM
5/19/2015 9:37:22 AM
5/19/2015 9:37:23 AM
5/19/2015 9:37:32 AM
5/19/2015 9:37:53 AM

等等…

select to_date (event_dt,'DD/MM/YYYY') as to_date_Farmatted from task_log
TO_DATE_FARMATTED
5/19/0015
5/19/0015
5/19/0015
5/19/0015
5/19/0015

to_date格式将年份格式化为 0015

如何避免将年份格式化为0015格式?我需要2015年的格式。请帮助我解决此问题。


问题答案:

截止日期(event_dt,“ DD / MM / YYYY”)

根据您对评论的回复,

  1. 您的数据库是 Oracle
  2. event_date列的数据类型为 DATE

切勿在 DATE* 列上应用 TO_DATE 。它迫使Oracle: *

  • 首先将其转换为字符串
  • 然后将其转换回日期

基于 特定语言环境的NLS设置 。您需要 TO_DATE 将文字转换为日期。对于 date-arithmetic
,请保留原样的日期。

您需要做的只是:

select count(*)
   from task_log 
  where trunc(event_dt) = to_date('19/05/2015','DD/MM/YYYY');

现在,要抓住的是 TRUNC 函数。请记住,DATE具有两个datetime元素。因此,在比较两个日期时必须牢记时间部分。

应用 TRUNC 将抑制任何常规 索引的 使用。最好使用“ 日期范围” 条件。

例如,

select count(*)
   from task_log 
  where event_date 
 between to_date('19/05/2015','DD/MM/YYYY')
    and to_date('19/05/2015','DD/MM/YYYY') + 1;


 类似资料:
  • 我想知道是否有人能帮我弄清楚为什么当我阅读. doc文件时,我的文本没有对齐。到目前为止,在我的代码中,我使用的是WordExtractor,但是我遇到了格式问题,有些东西没有正确对齐。这是我使用1.7Java编写的代码。 程序如何显示文档。 应该是这样展示的

  • 问题内容: 我有具有以下结构的Java类(类名并不表示任何东西,我只是在组成它们)。 整理测试实例时,JAXB生成的XML输出是我遇到的问题。XML输出将始终如下所示: 如您所见,某些元素没有正确缩进(即,最深的元素,计数和句点)。这是为什么?我创建JAXB上下文的方式有问题吗?还是JAXB可以递归缩进多少元素有最大限制?我该如何解决?请注意,我也已将JAXB_FORMATTED_OUTPUT设置

  • 问题内容: 我在使用SimpleDateFormat对象的方法时遇到麻烦。 有问题的代码是: 其中“ date”是使用Calendar.getTimeInMillis()中的long int创建的Date对象。 除字符串的年份部分外,其他所有东西都工作正常。当我传递日期时,输出的字符串如下所示: 传递的日期对象是从以下类型返回的长整数创建的: 我相信从此方法返回的数字是从1月1日算起的毫秒数。19

  • 后端实体类使用了@jsonformat注释,但在前端获取数据时24-hour和12hour中的时间格式似乎存在问题。例如,后端时间为2021-5-21 00:50,但发送到前端的时间变成了2021-5-21 12:50。是@jsonformat的属性设置有问题还是前端。

  • 我正计划在库伯内特斯的gunicorn上运行flask。为了正确地进行日志记录,我希望用JSON输出所有日志。 并且生成的日志是json格式的。但是消息部分(基于access_log_format的格式)现在包含转义双引号,并且不会被fluentd/ELK解析到单独的字段中 谢谢Jpw

  • 问题内容: 我的日期格式是,它产生日期: 但我需要这样的日期: 什么日期格式将产生带有冒号的偏移量? 问题答案: 您可以使用这种格式 看看该文档以获取更多信息。 PS:- 正如我的朋友 @Thomas所 提到的,这仅适用于 Java 7 及更高版本。