将字符串格式化为日期时间
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 专家。对不起!!以上是关于将字符串格式化为日期时间的主要内容,如果未能解决你的问题,请参考以下文章