簡體   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