This page mentionne comment trunc un horodatage à minutes/heures/etc. dans Oracle.Comment trunc une date à secondes dans Oracle
Comment voulez-vous trunc un horodatage à secondes de la même manière?
This page mentionne comment trunc un horodatage à minutes/heures/etc. dans Oracle.Comment trunc une date à secondes dans Oracle
Comment voulez-vous trunc un horodatage à secondes de la même manière?
Depuis la précision de DATE
est à la seconde (et aucune fraction de secondes), il n'y a pas besoin de TRUNC
du tout.
Le type de données TIMESTAMP
permet des fractions de secondes. Si vous le convertissez en DATE
, les secondes fractionnaires seront supprimées - par ex.
select cast(systimestamp as date)
from dual;
tronquer un timestamp
à quelques secondes vous pouvez le jeter à une date:
CAST(timestamp AS DATE)
Pour ensuite effectuer les TRUNC
« s dans l'article:
TRUNC(CAST(timestamp AS DATE), 'YEAR')
Sur la sujet général de la troncature des dates Oracle, voici le lien de la documentation pour les modèles de format qui peuvent être utilisés dans date trunc() ET round() fu elles fonctions
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions242.htm#sthref2718"Seconds" ne figure pas parce que la granularité de la DATE type_données secondes.
Quelque chose de l'ordre de:
select to_char(current_timestamp, 'SS') from dual;
J'utilise la fonction comme ceci:
FUNCTION trunc_sec(p_ts IN timestamp)
IS
p_res timestamp;
BEGIN
RETURN TO_TIMESTAMP(TO_CHAR(p_ts, 'YYYYMMDDHH24MI'), 'YYYYMMDDHH24MI');
END trunc_sec;
Je suis désolé, mais tous mes prédécesseurs semblent se tromper:
select cast (systimestamp as date) de dual ne tronque pas mais arrondit à la seconde suivante.
J'utilise une fonction:
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
J'ai couru votre code, mais ne peut pas reproduisez vos résultats. Dans quelques dizaines de tests (dont la plupart auraient été affectés par l'arrondissement), la portion des secondes n'a jamais différé entre les trois résultats. Quelle version d'Oracle êtes-vous? (J'étais sur 11.2). –
Oui, vous avez raison .. Cast fait un arrondi – javadeveloper
CAST arrondira avant la version 11i et tronquera après. Voir [Conversion implicite de données] (http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements002.htm#i163326) dans la documentation Oracle HTML. – Sulihin
travail trunc à min seulement, jeter à ce jour to_char(START_TIME,'YYYYMMDDHH24MISS')
ou simplement select to_char(current_timestamp, 'YYYYMMDDHH24MISS') from dual;
https://www.techonthenet.com/oracle/functions/trunc_date.php
Je pense que c'est la voie à suivre, puisque, contrairement à la plupart de ces réponses, il est indépendant de la version d'Oracle. Ce n'est pas tout à fait correct, cependant - vous avez manqué les secondes. Devrait être quelque chose comme: to_date (to_char (systimestamp, 'AAAA-MM-JJ HH24: MI: SS'), 'AAAA-MM-JJ HH24: MI: SS') – delany