Comment convertir 2011 -Q4 à 31/12/2011 dans l'oracle sql?

voix
1

Comment convertir 2011 -Q4à 12-31-2011SQL Oracle?

Créé 27/11/2018 à 15:14
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

Cette expression doit travailler pour transformer la valeur en la date:

select add_months(to_date(substr(yq, 1, 4)||'-01-01', 'YYYY-MM-DD'), substr(yq, -1, 1) * 3) - interval '1' day
from (select '2011-Q4' as yq from dual) x

Si vous voulez la date comme un format de chaîne particulière, utilisez to_char().

Créé 27/11/2018 à 15:19
source utilisateur

voix
0

Si vous cherchez à convertir un grand nombre de chaînes de quart, vous pouvez créer une table de ref pour REJOIGNEZ à.

SQL Fiddle

Créer les données de test :

CREATE TABLE src (qtrDate varchar(20));

INSERT INTO src (qtrDate)
SELECT '2011 -Q4' FROM dual UNION ALL
SELECT '2010 -Q3' FROM dual UNION ALL
SELECT '2011 -Q1' FROM dual UNION ALL
SELECT '2012 -Q1' FROM dual
;

Créez la table de référence et des données :

CREATE TABLE ref_quarters ( qtrString varchar(20), qtrEnd date, qtrBegin date ) ;
INSERT INTO ref_quarters ( qtrString, qtrEnd, qtrBegin )
SELECT to_char( dt, 'yyyy -"Q"q' )
  , dt
  , trunc(add_months(dt,-2),'mm')
FROM (
  SELECT add_months( '31-DEC-2009', rownum*3) dt
  FROM all_objects
  WHERE rownum <= 20 /* 20 Quarters since 2010 Q1 */
)

REMARQUE: Mettre à jour les dates et la rownum dans la requête interne à changer lorsque le comptage du trimestre devrait commencer et combien de trimestres que vous voulez. Vous pouvez également utiliser cette valeur pour modifier la définition de vos quartiers, tant dans le cadre du 1er trimestre tombe en janvier et le trimestre commence le premier du mois (c.-à-Q1 commence le 30 novembre au lieu de 1 JAN).

Maintenant , il suffit joindre aux deux :

SELECT qtrString AS originalStrin
  , TO_CHAR(qtrEnd,'MM/DD/YYYY') AS convertedString
FROM src
LEFT OUTER JOIN ref_quarters ON src.qtrDate = ref_quarters.qtrString

résultats :

| ORIGINALSTRIN | CONVERTEDSTRING |
|---------------|-----------------|
|      2010 -Q3 |      09/30/2010 |
|      2011 -Q1 |      03/31/2011 |
|      2011 -Q4 |      12/31/2011 |
|      2012 -Q1 |      03/31/2012 |

Cela peut aussi vous donner l'avantage de rendre vos chaînes de date un objet date réelle, et vous pouvez également ajouter d'autres points de données à la table de réf.

Créé 27/11/2018 à 15:49
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more