Извините, но все мои предшественники кажутся неправыми:
выбор приведения (systimestamp как дата) из двойного не усекает, а округляет до следующей секунды.
Я использую функцию:
CREATE OR REPLACE FUNCTION TRUNC_TS(TS IN TIMESTAMP) RETURN DATE AS
BEGIN
RETURN TS;
END;
SELECT systimestamp, trunc_ts(systimestamp) date_trunc,
CAST(systimestamp AS DATE) date_cast FROM dual
SYSTIMESTAMP DATE_TRUNC DATE_CAST
21.01.10 15:03:34,567350 +01:00 21.01.2010 15:03:34 21.01.2010 15:03:35