MySQL: Formateando fechas con DATE_FORMAT()

La función DATE_FORMAT() de MySQL, que fue incorporada en la versió 4.0 del conocido SGBD, nos permite dentro de un select definir el formato de salida de una fecha. La función recibe dos parámetros: una fecha o campo de fecha y una cadena de texto con el formato.

Los siguientes valores pueden ser usados en el formateo de fecha:

%aNombre del día abreviado (Sun a Sat)
%bNombre de mes abreviado (Jan a Dec)
%cMes en formato número (0 a 12)
%DDía del mes en formato numérico seguido de sufijo numeral (1st, 2nd, 3rd, …)
%dDía del mes en formato numérico, forzando dos dígitos  siempre ( de 01 a 31)
%eDía del mes en formato numérico, sin forzar dos dígitos (1 a 31)
%fMicrosegundos (000000 to 999999)
%HHora en formato 24 horas, con dos dígitos
%hHora en formato 12 horas, dos dígitos
%IHora en formato 12 horas, dos dígitos
%iMinutos
%jDía del año (001 a 366)
%kHora en formato 24 horas, sin forzar los dos dígitos
%lHora en formato 12 horas, sin forzar los dos dígitos
%MNombre del mes (January a December)
%mMes en formato numérico, forzando dos dígitos.
%pAM o PM
%rHora en formato 12 horas AM o PM (hh:mm:ss AM/PM)
%SSegundos (00 a 59)
%sSegundos (00 a 59)
%THora en formato 24 horas (hh:mm:ss)
%USemana, tomando el domingo como primer día (00 a 53)
%uSemana, tomando el lunes como primer día (00 to 53)
%VSemana, tomando el domingo como primer día (01 a 53). Usado con %X
%vSemana, tomando el lunes como primer día (01 a 53). Usado con %X
%WNombre del día completo (Sunday to Saturday)
%wNúmero del día en la semana, siendo el domindo 0 y el sábado 6.
%XAño para la semana, tomando el domingo como primer día. Usado con %V
%xAño para la semana, tomando el lunes como primer día. Usado con %V
%YAño en formato de cuatro dígitos
%yAño en formato de dos dígitos

Veamos unos ejemplos si quieres probarlo en casa:

Select DATE_FORMAT("2018-11-20", "%d/%m/%Y"); 
#Pintaría 20/11/2018, el formato europeo
Select DATE_FORMAT("2018-11-20", "%V %X"); 
#Pintaría 46 2018
Select DATE_FORMAT("2018-11-20", "%j-%y"); 
#Pintaría 324-2018
Select DATE_FORMAT("2018-11-20", "%W %d %M"); 
#Pintaría Tuesday 20 November

En el ejemplo le hemos pasado una cadena con una fecha como primer parámetro, pero puedes probar una consulta sobre un campo de una tabla que almacena alguna fecha.

Anuncios

El Bandcamp de la Quincena: Marijannah – Till Marijannah

Esta semana en El Bandcamp de la Quincena nos vamos de cabeza a por una ración de Stoner Doom a Asia, a Singapur, de la mano de Marijannah.

No tengo un máster en metal y rock asiático, pero por lo que leo estos Marijannah no son unos novatos a pesar de que este sea su disco debut, puesto que algunos de sus miembros han militado en bandas con una trayectoria sólida como los grindcoretas Wormrot, donde toca el guitarrista Rasyid Juraimi o la banda de sludge Abolition AD del bajista Muhd Azri.

Marijannah

En este Till Marijannah nos traen cuatro temas largos del palo stoner/doom donde la influencia de bandas como Sleep o Electric Wizard en las guitarras se dan la mano con algunas melodías más catchy y pop que les emparentan con Uncle Acid & The Deadbeats o Blood Ceremony. El primer tema, 1974, que habla del intento de asesinato contra Ronald Reagan a manos de un perturbado obsesionado con Jodie Foster en Taxi Driver, bien podría resultar una rendición a la temática de Church of Misery. Snakecharmer, el single del que han sacado vídeo, tira por los derroteros más estandarizados del género con algún guiño a Melvins y Black Sabbath, mientras que la más larga Bride of Mine tiene ese rollo tan “fiesta de los 60 con extra de ácido y Satán” que te lleva a pensar en los antes citados Uncle Acid. Para cierre del disco seguramente se dejen la pieza más pesada y atmosférica, una All Hollows’ Eve que seguramente sea el corte más limpio y oscuro, con unos coros sesenteros a lo Ghost de fondo.

Como primer acercamiento a la escena stoner de Singapur puedo decir que estos Marijannah me han dejado una impresión positiva y un gran sabor de boca. Queda por saber si podremos degustar su música a corto plazo en Europa.

Just Imagine… Cuando Stan Lee reescribió el universo DC

Tras la muerte de Stan Lee no han parado de sucederse los homenajes, y no es para menos pues se trata de una auténtica leyenda de los cómics. Como guionista, editor y empresario el nombre de Stan Lee siempre será sinónimo de Marvel Comics. Pero ¿Qué habría pasado si el viejo Stan en lugar de tener su propia editorial hubiera trabajado para otra? ¿Podría ser esto un argumento de uno de aquellos What if…? de la Marvel? Podría, pero realmente fue algo que ocurrió a principios de los dosmiles.

Just Imagine… fue una serie de 13 números autoconclusivos e independientes publicada por DC entre 2001 y 2002. De hecho posteriormente se publicaría en 3 tomos titulados más explícitamente Just Imagine Stan Lee Creating the DC Universe. La idea era juntar a varios dibujantes estrella de la casa como Joe Kubert, Bachalo, Walt Simonson o Jim Lee con Stan Lee para reescribir los orígenes de varios personajes principales del universo DC.

Batman Stan Lee

De esta forma Batman se reconvertía en un ex militar afroamericano que amasó su fortuna con una fugaz carrera en la lucha libre, Wonder Woman aparecía como una mujer latinoamericana que obtenía los poderes de una diosa inca, Superman se convertía en un policía kriptoniano que en su planeta natal no era excepcionalmente poderoso pero que ve amplificado su poder en la Tierra, Robin se tornaba un esbirro de un villano cuyo objetivo era matar a Batman, Flash era una mujer que obtenía sus poderes por un tratamiento médico experimental para una extraña enfermedad y Sandman un astronauta que fue traicionado y dado por muerto por un compañero durante un paseo espacial.

JLA Stan Lee

¿Eran evidentes los guiños a los orígenes de otros personajes del Universo Marvel? Lo eran. Siendo sinceros, no se trataba de una serie de tebeos especialmente buenos, y se nutrían más del morbo de Stan Lee trabajando para DC que de ser historias realmente brillantes. Desde luego no está ni entre lo mejor de la producción de DC, ni entre los trabajos más brillantes de Stan Lee ni entre las obras esenciales de la historia del cómic. Pero siempre estarán ahí como una de esas grandes anécdotas del tebeo americano: Cuando el fundador de Marvel hizo una serie para su tradicional y más grande rival.


Crear y borrar una vista en SQLite

¿Qué es una vista?

Una vista es una consulta cuyo resultado se presenta como una tabla, puesto que tienen la misma estructura: filas y columnas. La diferencia es que sólo se almacena de ellas la definición y no los datos, que se extraen de las otras tablas de la base de datos. En SQLite la vistas son de solo lectura, de forma que no se pueden ejecutar instrucciones INSERT, DELETE o UPDATE sobre ellas para actualizar las tablas.

¿Cómo creo una vista en SQLite?

Para crear una vista en SQLite tenemos la instrucción CREATE VIEW. Tendremos que asignar un nombre a la vista que creamos y ejecutar una consulta que nos devuelva los datos que formarán nuestra vista. La sintaxis sería:

CREATE VIEW Vista_Nueva 
AS 
SELECT
	t1.Id,
        t1.Campo1,
        t2.Campo1 as Campo2
FROM
	tabla t1
INNER JOIN tabla2 t2 ON t1.IdEnTabla2 = t2.Id;

Vamos a poner como ejemplo que tenemos una tabla con variedades de quesos, otra con países y otra con tipos de leche. Y queremos una vista que nos muestre de qué país y con qué tipo de leche está hecho cada queso. Pues podríamos sacarlo con una consulta así:

CREATE VIEW v_QuesosDetallada 
AS 
SELECT
	q.Id,
        q.Nombre,
        p.Nombre as Pais,
        l.Descripcion as TipoLeche
FROM
	Quesos q
INNER JOIN paises p ON q.IdPais = p.Id
INNER JOIN leches l ON q.IdTipoLeche = l.Id;

¿Cómo borro una vista?

Para eliminar una vista en SQLite tenemos la instruccion DROP VIEW, que iría seguida del nombre de la tabla. Siguiendo con el ejemplo de arriba, para borrar la vista v_QuesosDetallada tendríamos que ejecutar la siguiente instrucción:

DROP VIEW v_QuesosDetallada;

De esta forma eliminaríamos la vista de nuestra base de datos.

Si intentamos crear una vista con un nombre que ya existe o si intentamos borrar una que no existe recibiremos un mensaje de error. Por tanto es interesante asegurarse utilizando IF NOT EXISTS a la hora de crear e IF EXISTS a la de borrar.

ClipIt: Gestor de portapapeles para Ubuntu

¿Qué es ClipIt?

ClipIt es un gestor de portapapeles para Ubuntu, desarrollado en C e implementado con GTK+. Como gestor avanzado de portapapeles, ClipIt nos permite almacenar varios textos en memoria para pegar más adelante.

¿Cómo lo instalo?

ClipIt puede ser instalado desde el centro de software de Ubuntu o utilizando la siguiente instrucción desde la consola de comandos:

sudo apt-get install clipit

¿Cómo lo utilizo?

Una vez instalado solo tienes que ejecutarlo y verás como aparece un indicador en la barra de notificaciones de tu sistema operativo como este:

Icono clipit
Se trata del icono en rojo.

Conforme vayas copiando distintas cosas al portapapeles estas se irán guardando en tu historial, y podrás acceder a ellas después ya sea mediante el atajo de teclado ctrl+alt+h o pulsando encima del icono de ClipIt antes descrito.

Además, ClipIt ofrece varias opciones de configuración como modificar o crear los atajos de teclado, definir el número de entradas que queremos que memorice, configurar que no almacene contraseñas… las puedes encontrar todas en el menú de configuración:

preferencias clipit


Exportar una máquina virtual en Virtual Box

Hoy vamos a ver cómo podemos exportar una máquina virtual desde Virtual Box.

Virtual Box incorpora un mecanismo para exportar máquinas virtuales a otros equipos, siendo incluso compatible con otros softwares de virtualización pues se basa en Open Virtualization Format (OVF), un formato abierto para la exportación de máquinas virtuales.

Si queremos iniciar una exportación pulsamos desde el administrador de Virtual Box el menú Archivo -> Exportar servicio virtualizado. Esto nos sacará una lista de las máquinas disponibles para exportar, donde seleccionaremos la que corresponda.

Exportando máquinas de Virtual Box

Tras eso nos preguntará el nombre del fichero que almacenará la exportación. Aquí podremos elegir dos extensiones: .ova u .ovf. Usando la primera todo se guardará en un único fichero comprimido. Con la segunda la exportación se distribuirá en varios ficheros.

Eligiendo formato para exportar

Finalmente tendremos una ventana donde añadir algunos detalles para la exportación. Tras eso basta pulsar el botón Exportar.

Paso final Export VBox

Orden de operaciones aritméticas (PEMDAS) y su aplicación en lenguajes de programación.

Todo un clásico en las redes sociales es que alguien comparta la operación 5+4/3-1*2 y que se monte un gallinero tremendo en los comentarios con distintas soluciones. Esto se debe a que mucha gente no tiene claro cómo va la jerarquía de las operaciones y el orden de evaluación de las mismas.

Si hablamos de operaciones básicas, y de la mayoría de lenguajes de programación (Javascript, PHP, Python, Ruby, C,Visual Basic, Java…), nos regiremos por el orden de operaciones conocido por el acrónimo inglés PEMDAS, que en castellano podríamos traducir como PAPOMUDAS (PAréntesis, POtencias, MUltiplicación, División, Adición, Sustracción). En base a esto el orden de operaciones en lenguajes de programación como Python, PHP, Ruby o Javascript sería:

  1. Paréntesis
  2. Potencias y radicales
  3. Multiplicación, división, división entera y módulo.
  4. Suma y resta.

En este enlace puedes comprobar los resultados de distintas operaciones realizados en distintos lenguajes de programación. Puedes copiar los siguientes ejemplos para comprobar que el resultado es el mismo.

Aquí el código en Javascript:

var resultado = 5+4/3-1*2;
console.log(resultado);

Aquí el código en Python:

resultado = 5+4/3-1*2
print(resultado)

Aquí en Java:

public class Test {
  public static void main(String[] args){
    System.out.println(5.0+4.0/3.0-1.0*2.0);
  }
}

Y aquí en C:

void main(void) {
   double resultado;
   resultado = 5.0+4.0/3.0-1.0*2.0;
   printf("%f",resultado);
}

Como puedes comprobar, en todos el resultado es 4.333333 ya que todos usan el mismo orden para las operaciones.