【问题标题】:Sorting SQL Query By Date Column按日期列排序 SQL 查询
【发布时间】:2021-08-13 03:32:49
【问题描述】:

我正在开发一个项目,其中包含一个用于患者就诊的日期列,格式为 %m-%d-yyyy,并且需要进行排序,以便仅提取该日期在最后一个日期内的行两周。我已经尝试了一些不同的 convert、to_date 函数,但似乎都无法正常工作。

我对 SQL 还是很陌生,我不知道这是否是一种特殊情况,因为我正在使用 oracle db

不是完整的代码,因为它有几十个查询和多个连接(这会影响日期语法吗?)但这是我正在尝试的格式...

create table "Visits"

insert into "Visits" (
    'John Doe',
    '5/24/2021',
    'Story about the visit',
    'More room for story if needed')

select
    "User_Name",
    "Visit_Date",
    "Visit_Narrative",
    "Visit_Narrative_Overflow"
    from "Visits"
where "Visits"."Visit_Date" >= TRUNC(SYSDATE) - 14


【问题讨论】:

  • edit 提出您的问题:表的 DDL (CREATE TABLE) 语句;复制您的问题的一些示例数据的 DML (INSERT) 语句;错误消息的全文;以及该样本数据的预期输出。
  • 它响应 [SQLCODE: :]。需要注意的是,它正在被拉入excel中
  • "Visits"."Visit_Date"的定义是什么?
  • "Visits"."Visit_Date" 是存储患者就诊日期的列,例如2021 年 5 月 24 日。因为我只能通过 Excel 上的 OBDC 连接访问数据库,所以它不再为我提供信息

标签: sql oracle date where-clause


【解决方案1】:

我正在开发一个项目,其中的数据库包含 %m-%d-yyyy 格式的患者就诊日期列

不,您没有mm.dd.yyyy 格式的它。 DATE 数据类型值作为 7 字节的二进制值存储在数据库中(代表世纪、世纪、月、日、小时、分钟和秒),它具有 no 格式。

需要排序,以便只提取该日期在过去两周内的行。

你想要一个WHERE 过滤器:

如果您想获得过去 14 天发生的值,那么 TRUNCate 将当前日期返回到午夜并减去 14 天:

SELECT visit_date
FROM   patient
WHERE  visit_date >= TRUNC(SYSDATE) - INTERVAL '14' DAY

SELECT visit_date
FROM   patient
WHERE  visit_date >= TRUNC(SYSDATE) - 14

(如果你想要今天和今天之前的 13 天,或者减去 13。)

如果您想在上周的星期一之后使用 TRUNCate 到 ISO Week 的开头(通常是星期一)并减去 7 天:

SELECT visit_date
FROM   patient
WHERE  visit_date >= TRUNC(SYSDATE, 'IW') - INTERVAL '7' DAY

【讨论】:

  • 感谢您的快速回复。对于那些我一直遇到-359错误的人,我认为因为就像你说的那样,它不是真正的日期格式 - 数据库只是将它作为该日期的字符串(尽管它不是该行的创建日期)我会添加完整的片段以提供更好的想法
【解决方案2】:

我最终根据另一个论坛的答案(链接如下)解决了这个问题; 看来我原来的 to_date() 是不完整的,在我的 where 子句中没有第二个 and 运算符。这段代码运行良好

select
    "User_Name",
    "Visit_Date",
    "Visit_Narrative",
    "Visit_Narrative_Overflow"
    from "SQLUser"."Visits"
   where "SQLUser"."Visits"."Visit_Date" >= to_date('5/10/2021', 'MM/DD/YYYY')
    and "SQLUser"."Visits"."Visit_Date" < to_date('5/24/2021', 'MM/DD/YYYY')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多