簡體   English   中英

將日期類型轉換為僅顯示時間

[英]Casting Date type to only display time

在我的數據庫(一個 Oracle 11 數據庫)中,我有一個日期類型的屬性,但由於某種原因在值中有一個時間,我知道為什么它是日期類型而不是日期時間。 當我 select 這個“Position_time”當然它只顯示日期但是當我嘗試在列上進行過濾時,更多選項會顯示相同日期的多次,因此即使它是日期類型,也會在此列中顯示時間值. 鏈接到 position_time 上下文的圖片

如圖所示,即使屬性是 Date 類型,它也包含一個時間“組件” 這僅在我嘗試過濾重要的列 idk 時才顯示在概述中。

我想從我的約會中提取這個時間。 我已經看到很多帖子解釋了如何從 DateTime 列中提取而不是從 Date 中提取。 我無法更改此列的類型。 有什么辦法可以做到這一點? 例如

select
format(tr.position_time)
from positions

你的意思是這樣的:

    select to_char(to_date(position_time,'dd-mm-yyyy HH24:MI:SS'),
'HH24:MI:SS') time from positions;

如果您已經將日期類型作為參數傳遞,那么只需使用to_char function 從中提取時間。

例如:

Select to_char(position_time,'HH24:MI:SS') from positions;

您將轉換為字符串:

select to_char(tr_position_time, 'HH24:MI:SS')
from positions;

在 Oracle 中, date數據類型由日期 + 時間組成。

這是您的 IDE 的NLS設置,它正在顯示這樣的數據。

如果要顯示日期和時間,請使用:

select
To_char(tr.position_time,'dd-mon-rrrr hh24:mi:ss')
from positions 

或者,如果您只想要時間部分,請使用:

select
To_char(tr.position_time,'hh24:mi:ss')
from positions

如果您想隨時間查看 session 中的所有日期,請更改會話的NLS設置。

ALTER SESSION SET NLS_DATE_FORMAT = 'dd-mon-yyyy hh24:mi:ss';

select
tr.position_time -- formatting is not needed
from positions

在您的 IDE 中,也必須有更改NLS設置的設置。

干杯!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM