È possibile sia il cast ad una data con nessun frazioni di secondo (questo giro al secondo più vicino):
CAST(your_timestamp AS TIMESTAMP(0))
O per un tipo di dati DATE
(questo troncherà al secondo più vicino):
CAST(your_timestamp AS DATE)
Se si desidera come tipo di dati poi gettato indietro:
CAST(CAST(your_timestamp AS DATE) AS TIMESTAMP(0))
Oppure si può convertirlo in una stringa formattata e specificare il modello di formato che si desidera utilizzare (questo troncherà al secondo più vicino):
TO_CHAR(your_timestamp, 'YYYY-MM-DD HH24:MI:SS')
Ti piace questa:
SQL Fiddle
Setup
Oracle 11g R2 schema:
CREATE TABLE your_table (your_timestamp) AS
SELECT TIMESTAMP '2017-10-25 12:53:12.10076' FROM DUAL;
Query 1:
SELECT CAST(your_timestamp AS TIMESTAMP(0)) AS "Timestamp",
CAST(your_timestamp AS DATE) AS "Date",
TO_CHAR(your_timestamp, 'DD-MM-YYYY HH24:MI:SS') AS "String"
FROM your_table
Results:
| Timestamp | Date | String |
|-----------------------|----------------------|---------------------|
| 2017-10-25 12:53:12.0 | 2017-10-25T12:53:12Z | 25-10-2017 12:53:12 |
nota: Come il TIMESTAMP
e DATE
sono formattati in uscita dipenderà dalla vostra NLS_TIMESTAMP_FORMAT
e NLS_DATE_FORMAT
parametri di sessione, ma si può direttamente controlla la formattazione di TO_CHAR
quando si specifica un modello di formato.
questo funziona ma ho bisogno di archiviato per essere un timestamp (0). quando eseguo il tuo codice, perdo l'AM/PM e il tempo perde il suo formato GMT. Può essere trasmesso su un timestamp (0)? quindi potrebbe funzionare – user3022875
se è necessario il formato 12 ore con AM/PM, quindi utilizzare la seconda query – HaveNoDisplayName
ma questo è ancora un CHAR. Ho bisogno di timestamp (0). è possibile? – user3022875