Można też rzucić go do datownik bez ułamków sekund (będzie okrągły z dokładnością do sekundy):
CAST(your_timestamp AS TIMESTAMP(0))
lub do typu danych DATE
(będzie obciąć do najbliższej sekundy):
CAST(your_timestamp AS DATE)
Jeśli chcesz go jako typ danych następnie wrzucił go z powrotem:
CAST(CAST(your_timestamp AS DATE) AS TIMESTAMP(0))
Albo można przekonwertować go do sformatowany ciąg i określić model format, którego chcesz używać (to obciąć z dokładnością do sekundy):
TO_CHAR(your_timestamp, 'YYYY-MM-DD HH24:MI:SS')
Jak to:
SQL Fiddle
Konfiguracja
Oracle 11g R2 Schemat:
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 |
uwaga: Jak TIMESTAMP
i DATE
są sformatowane w wyjściu będzie zależeć od parametrów sesji NLS_TIMESTAMP_FORMAT
i NLS_DATE_FORMAT
ale można bezpośrednio kontroluj formatowanie TO_CHAR
po określeniu modelu formatu.
to działa, ale potrzebuję, aby plik był znacznikiem czasu (0). kiedy uruchamiam twój kod, tracę AM/PM, a czas traci swój format GMT. Czy można go przesyłać do znacznika czasu (0)? to może działać – user3022875
, jeśli potrzebujesz formatu 12 godzin z AM/PM, a następnie użyj drugiego zapytania – HaveNoDisplayName
, ale nadal jest to CHAR. Potrzebuję znacznika czasu (0). czy to jest możliwe? – user3022875