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