将字符串格式化为日期时间

Posted

技术标签:

【中文标题】将字符串格式化为日期时间【英文标题】:Format string to Datetime 【发布时间】:2019-08-13 15:13:29 【问题描述】:

我目前正在 Microsoft Query 中对我们的 Oracle 数据库创建查询。不知何故,我只从 Oracle DB 中获取日期作为字符串。格式如下所示:“YYYY-DD-MM SS:MM:HH”。 Excel 仅将末尾的列识别为字符串。 如何以日期格式“DD.MM.YYYY”直接输出列? 我可以直接通过 Select 更改格式吗?

  SELECT 
    DB_Gen.STRT, 
    DB_Gen.SRST, 
    DB_Gen.DOCO, 
    DB_Gen.WR02, 
    DB_Gen.WR03, 
    DB_Gen.UORG, 
    DB_Gen.LITM
  FROM 
    MCC.POOLDB DB_Gen
  WHERE 
    (DB_Gen.WR03 Like 'G%') 
    AND (DB_Gen.MCU='AMC') 
    AND (DB_Gen.DCTO='WO') 
    AND (DB_Gen.WR01<>'EX') 
    AND (DB_Gen.STRT Between TRUNC(TO_DATE('01.01.2019','dd.mm.yyyy')) 
    AND TRUNC(TO_DATE('01.09.2019','dd.mm.yyyy')))

你知道我如何显示过去 60 天吗? 到目前为止,我只谈论Between和Trunc(TO_DATE .....

最好的问候 约书亚

【问题讨论】:

看起来您正在寻找 to_char 函数(从 MCC.POOLDB DB_den 中选择 to_char(DB_Gen.STRT, 'DD.MM.YYYY')....) 【参考方案1】:

如何显示过去 60 天?

where DB_Gen.STRT >= trunc(sysdate) - 60

如何直接以日期格式输出列 “DD.MM.YYYY”?

select to_char(DB_Gen.STRT, 'DD.MM.YYYY') as strt

【讨论】:

【参考方案2】:

我想你正在寻找

DB_Gen.STRT BETWEEN SYSDATE - 60 AND SYSDATE --Or CURRENT_DATE

【讨论】:

【参考方案3】:

如果我必须在查询中多次访问日期,我更喜欢在会话级别将 NLS_DATE_FORMAT 设置为所需的格式。

在你的情况下,以下是我的建议:

-- setting date format at session-level
alter session set NLS_DATE_FORMAT = 'DD.MM.YYYY'; 

SELECT 
    DB_Gen.STRT, -- this date will be populated in DD.MM.YYYY format in result
    DB_Gen.SRST, 
    DB_Gen.DOCO, 
    DB_Gen.WR02, 
    DB_Gen.WR03, 
    DB_Gen.UORG, 
    DB_Gen.LITM
  FROM 
    MCC.POOLDB DB_Gen
  WHERE 
    (DB_Gen.WR03 Like 'G%') 
    AND (DB_Gen.MCU='AMC') 
    AND (DB_Gen.DCTO='WO') 
    AND (DB_Gen.WR01<>'EX') 
    AND (TRUNC(DB_Gen.STRT) BETWEEN TRUNC(SYSDATE-60) AND TRUNC(SYADATE);
-- Trunc is used to ignore time portion

干杯!!

【讨论】:

嘿Tejash!感谢重播。这种方法是否会改变数据库中的任何内容?我只有只读权限。 不。它不会在数据库级别更改任何内容。 好的,但是我遇到了一个错误,第一行缺少或无效的选项。微软查询有什么具体的语法原则吗? Ohho.. 这是oracle SQL的语法。 我不是 MS SQL 专家。对不起!!

以上是关于将字符串格式化为日期时间的主要内容,如果未能解决你的问题,请参考以下文章

当我将字符串格式化为日期时出现错误的日期

c_cpp 将日期/时间格式化为字符串

Swift:将开始和结束日期格式化为单个字符串

使用 Pandas 将字符串格式化为日期时间 - 指令问题

Oracle数据库中如何将字符串格式化为日期

C# DateTime 将日期字符串格式化为带时区的日期格式