繁体   English   中英

oracle SQL 如何从日期中删除时间

[英]oracle SQL how to remove time from date

我有一个名为StartDate的列,其中包含以下格式的日期: 03-03-2012 15:22

我需要的是将其转换为日期。 它应该是这样的: DD/MM/YYYY

我尝试过但没有成功的是:

select 
p1.PA_VALUE as StartDate,
p2.PA_VALUE as EndDate
from WP_Work p 
LEFT JOIN PARAMETER p1 on p1.WP_ID=p.WP_ID AND p1.NAME = 'StartDate'
LEFT JOIN PARAMETER p2 on p2.WP_ID=p.WP_ID AND p2.NAME = 'Date_To'
WHERE p.TYPE = 'EventManagement2'
AND TO_DATE(p1.PA_VALUE, 'DD/MM/YYYY') >= TO_DATE('25/10/2012', 'DD/MM/YYYY')
AND TO_DATE(p2.PA_VALUE, 'DD/MM/YYYY') <= TO_DATE('26/10/2012', 'DD/MM/YYYY')

有没有办法做到这一点?

EDIT1: PA_VALUE列是: VARCHAR2

您可以在 DateTime 上使用TRUNC来删除 DateTime 的时间部分。 所以你的 where 子句可以是:

AND TRUNC(p1.PA_VALUE) >= TO_DATE('25/10/2012', 'DD/MM/YYYY')

TRUNCATE (datetime) 函数返回日期,其中日期的时间部分被截断为格式模型指定的单位。

当您将字符串转换为日期时,您需要将日期掩码与字符串中的格式相匹配。 这包括一个时间元素,您需要将其删除并截断:

select 
    p1.PA_VALUE as StartDate,
    p2.PA_VALUE as EndDate
from WP_Work p 
LEFT JOIN PARAMETER p1 on p1.WP_ID=p.WP_ID AND p1.NAME = 'StartDate'
LEFT JOIN PARAMETER p2 on p2.WP_ID=p.WP_ID AND p2.NAME = 'Date_To'
WHERE p.TYPE = 'EventManagement2'
AND trunc(TO_DATE(p1.PA_VALUE, 'DD-MM-YYYY HH24:MI')) >= TO_DATE('25/10/2012', 'DD/MM/YYYY')
AND trunc(TO_DATE(p2.PA_VALUE, 'DD-MM-YYYY HH24:MI')) <= TO_DATE('26/10/2012', 'DD/MM/YYYY')

我们可以在 Oracle DB 中使用 TRUNC 函数。 这是一个例子。

SELECT TRUNC(TO_DATE('01 Jan 2018 08:00:00','DD-MON-YYYY HH24:MI:SS')) FROM DUAL

输出:1/1/2018

尝试

SELECT to_char(p1.PA_VALUE,'DD/MM/YYYY') as StartDate,
       to_char(p2.PA_VALUE,'DD/MM/YYYY') as EndDate
   ...

如果您的 DATE 数据类型列具有如下值:-

列中的值:2005 年 11 月 10 日 06:31:00

然后,您可以在选择查询中使用 TRUNC 函数将您的日期时间值转换为仅日期,例如 - DD/MM/YYYY 或 DD-MON-YYYY

从 table1 中选择 TRUNC(column_1);

结果:2005 年 11 月 10 日

您将看到以上结果 - 前提是 NLS_DATE_FORMAT 设置如下:-

更改会话 NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM