Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Practica4 3

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

Luis Fernando Bermúdez García

Programación de Bases de Datos con SQL 4-3: Funciones de Fecha


Actividades de Práctica
Objetivos
• Seleccionar y aplicar las funciones de una sola fila MONTHS_BETWEEN,
ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND y TRUNC que funcionan en los
datos de fecha
• Explicar cómo transforman las funciones de fecha las fechas de Oracle en datos de
fecha o en valores numéricos
• Mostrar un uso adecuado de los operadores aritméticos con fechas
• Mostrar el uso de SYSDATE y las funciones de fecha
• Establecer las consecuencias de que los negocios de todo el mundo puedan
manipular fácilmente los datos almacenados en formato de fecha

Terminología
Identifique el término para cada una de las siguientes definiciones.

SYSDATE Una función de fecha que devuelve la fecha y hora actuales del
servidor de base de datos.

ADD_MONTHS Agregar meses de calendario a fecha

LAST_DAY Último día del mes

NEXT_DAY Día posterior a la fecha especificada

MONTHS_BETWEEN Número de meses entre dos fechas de vencimiento

Base de Datos
2

Inténtelo/Resuélvalo

1. Para DJs on Demand, muestre el número de meses entre event_date de la boda de Vigil
y la fecha actual. Redondee al mes más cercano.

SELECT name, event_date, ROUND(MONTHS_BETWEEN(SYSDATE, event_date)) as


"Numero de meses"
FROM d_events
WHERE name = 'Vigil wedding';

2. Muestre los días entre el inicio de las vacaciones escolares del verano pasado y el día
que comienza la escuela este año. Suponga que cada mes tiene 30,5 días. Asigne a la
salida el nombre “Days”.

select round(months_between('04-Sep-2017', '08-Jan-2018') *30.5,0) "Days"


from dual;

3. Muestre los días entre el 1 de enero y el 31 diciembre.

SELECT TO_DATE('31-Dec-2018', 'dd-Mon-yyyy') - TO_DATE('01-Jan-2018', 'dd-Mon-


yyyy') as "Días"
FROM dual;

4. Mediante una sentencia, redondee la fecha de hoy al mes y al año más cercanos y
trúnquela al mes y al año más cercanos. Utilice un alias para cada columna.

SELECT ROUND(SYSDATE, 'Month') as "Día más cercano",


ROUND(SYSDATE, 'Year') as "Día más cercano", TRUNC(SYSDATE, 'Month') as "Mes
más cercano",
TRUNC(SYSDATE, 'Year') as "Mes más cercano"
FROM dual;

5. ¿Cuál es el último día del mes de junio de 2005? Utilice un alias para la salida.

SELECT LAST_DAY(To_date('01-Jun-2005', 'dd-Mon-yyyy')) as “Último día de Junio”


FROM dual;

Base de Datos
6. Muestre el número de años entre la fecha de nacimiento del empleado de Global Fast
Foods Bob Miller y la fecha actual. Redondee al año más cercano.

SELECT first_name, last_name , ROUND(MONTHS_BETWEEN(SYSDATE,


birthdate)/12) "No of Years"
FROM f_staffs
WHERE first_name || ' ' || last_name = 'Bob Miller';

7. Su próxima cita con el dentista es en seis meses a partir de hoy. ¿Qué día irá al dentista?
Asigne a la salida el nombre “Appointment”.

SELECT TO_CHAR(ADD_MONTHS(SYSDATE, 6),'dd-Mon-yyyy (DY)') as "Appointment"


FROM dual;

8. El profesor le ha avisado de que dispone hasta el último día de este mes para entregar el
informe de investigación. ¿Qué día es? Asigne a la salida el nombre “Deadline”.

SELECT TO_CHAR(LAST_DAY(SYSDATE),'dd-Mon-yyyy (Day)') as "Deadline"


FROM dual;

9. ¿Cuántos meses hay entre su día de cumpleaños de este año y el 1 de enero del
próximo año?

SELECT TO_DATE('02/02/2018','mm/dd/yyyy') "Cumple de este año",


ADD_MONTHS(TO_DATE('02/02/2018','mm/dd/yyyy'),12) "Cumple próximo año",
TRUNC(ADD_MONTHS(TO_DATE('02/02/2018','mm/dd/yyyy'),12), 'Year') "Primer día del
siguiente año" ,
ROUND(MONTHS_BETWEEN( TRUNC( ADD_MONTHS(TO_DA
TE('02/02/2018','mm/dd/yyyy'),12), 'Year'),
TO_DATE('02/02/2018','mm/dd/yyyy'))) "Meses hasta Enero próximo" FROM
dual;

10. ¿Qué fecha es el viernes siguiente a su cumpleaños de este año? Asigne a la salida el
nombre “First Friday”.
SELECT TO_DATE('02/02/2018','mm/dd/yyyy') "Cumpleaños",
NEXT_DAY(TO_DATE('02/02/2018','mm/dd/yyyy'), 'Friday') "First Friday"
FROM dual;

11.Asigne un nombre a una función de fecha que devuelva un número.


MONTHS_BETWEEN

Base de Datos
12.Asigne un nombre a una función de fecha que devuelva una fecha.
ADD_MONTHS

13. Proporcione un ejemplo de por qué es importante que las compañías puedan manipular
los datos de fecha.

Porque en caso de tener información importante con fecha errónea se generarán


demasiados problemas, tanto administrativos como comerciales.

Ejercicios de Ampliación

1. Utilizando DUAL, escriba una sentencia que convierta 86.678 en 86.68.


SELECT ROUND(86.678, 2)
FROM dual;

2. Escriba una sentencia que muestre los títulos de CD de DJs on Demand para
cd_numbers 90 y 91 en mayúsculas en una columna con la cabecera “DJs on Demand
Collections”.

SELECT UPPER(title) "DJs on Demand Collections"


FROM d_cds
WHERE cd_number IN( 90, 91);

3. Escriba una sentencia que cree los nombres de usuario de computadora de los partners
de DJs on Demand. Los nombres de usuario estarán formados por las letras del apellido
en minúsculas + la primera letra del nombre en mayúsculas. Asigne a la columna el título
“User Passwords”. Por ejemplo, Mary Smythers sería smythersM.

SELECT LOWER(last_name) || UPPER(SUBSTR(first_name, 1,1) ) "User Passwords"


FROM d_partners;

Base de Datos
4. Escriba una sentencia que convierta “It’s a small world” en “HELLO WORLD”.

SELECT UPPER(REPLACE( 'It''s a small world' , 'It''s a small', 'hello' )) as "Conversión"


FROM dual;

5. Escriba una sentencia que elimine “fiddle” de “fiddledeedee” y “dum” de “fiddledeedum”.


Muestre el resultado “fiddledeedeedee” en una columna con la cabecera “Nonsense”.

SELECT REPLACE('fiddledeedum', 'dum')||REPLACE('fiddledeedee', 'fiddle') "Nonsense"


FROM dual;

6. Sustituya cada “i” de Mississippi por “$”.

SELECT REPLACE('Mississippi ', 'i', '$')


"Conversión" FROM dual;

7. Utilizando DUAL, convierta 5332,342 en 5300.

SELECT ROUND(5332.342, -2) as "Redondeado"


FROM dual;

8. Utilizando DUAL, convierta 3,14159 en 3,14.

SELECT ROUND(3.14159 , 2) as " Redondeado "


FROM dual;

9. Utilizando DUAL, convierta 73,892 en 73,8.

SELECT TRUNC(73.892 , 1) as "Truncado”


FROM dual;

10. ¿Cuál es el próximo viernes en seis meses a partir de ahora? Etiquete la columna como
“Future”.

SELECT TO_CHAR(NEXT_DAY( ADD_MONTHS(SYSDATE,6), 'Friday'), 'dd-Mon-yyyy


(Day)') "Future"
FROM dual;
Base de Datos
11. ¿Cuál será la fecha dentro de 10 años a partir de ahora? Etiquete la columna como
“Future”.

SELECT TO_CHAR(ADD_MONTHS(SYSDATE, 10*12), 'dd-Mon-yyyy (Day)') "Future"


FROM dual;

12. Los años bisiestos se producen cada cuatro años. Recuerde que el 2004 fue un año
bisiesto. Ahora cree una función que muestre la fecha del siguiente año bisiesto como
29-Feb-2008. Etiquete la columna como “Future”.

SELECT TO_CHAR( LAST_DAY( To_Date('01-Feb-2008', 'dd-Mon-yyyy') ), 'dd-Monyyyy


(Day)') "Future"
FROM dual;

13. Escriba una sentencia que busque cualquier tema de DJs on Demand que tenga una “ie”
en su nombre.

SELECT description
FROM d_themes
WHERE description like '%ie%';

14. Escriba una sentencia que solo devuelva los CD de DJs on Demand de años mayores
que 2000, pero menores que 2003. Muestre el título y el año.

SELECT title, year FROM d_cds


WHERE year > 2000 AND year < 2003;

15. Escriba una sentencia que devuelva el ID de empleado de los empleados de la base de
datos Oracle y sus fechas de inicio de contratación entre el 1 de enero de 1997 y la fecha
actual. Muestre el resultado ordenado del contratado más recientemente al más antiguo.

SELECT employee_id, hire_date


FROM employees
WHERE hire_date BETWEEN TO_DATE( '01-Jan-1997', 'dd-Mon-yyyy') AND SYSDATE
ORDER BY hire_date DESC;

Base de Datos

También podría gustarte