[英]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.