SQL Server: Calcular una edad a partir de una fecha.

¿Cuántas veces no tenemos que sacar, en una consulta, la edad de una persona a partir de su fecha de nacimiento? Es una consulta que me toca hacer habitualmente (y que, mira por dónde, nunca había comentado aquí). ¿Cómo lo hacemos en SQL-Server?

Pensemos que tenemos una tabla clientes, donde hay un campo de tipo DATE llamado FechaNac en el que almacenamos sus fechas de nacimiento. Podrías creer que lo más simple es hacer lo siguiente:

Select DATEDIFF(YEAR,FechaNac,GETDATE()) as Edad from clientes

Pero hay un problema: Esa solución sólo resta los años, no tiene en cuenta el mes y el día ¿qué pasaría entonces? Que nos pondría la edad que ese cliente va a cumplir durante este año, no su edad real. ¿Cómo lo solucionamos? Hay muchas opciones, yo he optado por esta:

Select DATEDIFF(YEAR,FechaNac,GETDATE())
-(CASE
   WHEN DATEADD(YY,DATEDIFF(YEAR,clientes.FechaNac,GETDATE()),clientesFechaNac)>GETDATE() THEN 
      1
   ELSE 
      0 
   END) as Edad
 from clientes

Lo que hacemos es sumar la diferencia de años a la fecha de nacimiento y, en caso de que fuera posterior a hoy (es decir, todavía no ha cumpliado años) restamos 1 a la diferencia, si no restamos 0 y nos quedamos como estamos.

Otra opción, más elegante, podría ser esta:

Select floor(
(cast(convert(varchar(8),getdate(),112) as int)-
cast(convert(varchar(8),clientes.FechaNac,112) as int) ) / 10000
) as edad from clientes

En este caso convertimos la fecha al formato clásico de base de datos como una cadena que aglutina pegados Fecha, mes y día y lo convertimos a un entero (hoy nos quedaría por ejemplo 20151001), se lo restamos a la fecha de nacimiento, dividimos entre diez mil para obtener el año y redondeamos por defecto con la función floor().

Los cinco grupos gallegos que no puedes perderte (y II)

Ya han pasado casi cuatro años de una entrada que hice sobre mis bandas favoritas del panorama galaico. Así que comencemos con una recapitulación ¿qué ha sido de esas cinco bandas del artículo original?

  • The Brosas publicaron un disco nuevo a través del sello compostelano Lixo Urbano, y a día de escribir esta entrada andan un poco parados componiendo material nuevo y preparando un set list con los temas nuevos.
  • Oath ya de aquellas dudaba si estaban en activo y ahora os confirmo que no. Su vocalista anda metido en este proyecto
  • Mutant Squad ahora son Mutant, a secas. Han tenido que cambiar de bajista recientemente, han girado por toda la Península Ibérica durante estos años, publicado un lp y están prerando un nuevo trabajo llamado Pleiades.
  • Primitive han pasado por varios cambios en la formación, y ya sólo queda de los miembros que militaban en la banda cuando escribí el primer artículo el guitarrista Nano, que también toca en los Talesien. Lo que no ha cambiado es la caña que destila el grupo. Ahora mismo están parados, pero en activo.
  • Tungsteno publicaron un disco hará cosa de un año y llevan una temporada algo parados en el tema de dar conciertos (aunque creo que les pude ver un par de veces durante este 2015).

Y ahora vamos un poco con lo nuevo ¿Qué cinco bandas son las elegidas para este artículo? Bueno, voy a empezar comentando que quería poner sólo bandas en activo, así que cuando ya tenía todo decidido tuve que hacer un cambio de última hora, ya que me comentaron que Unicornibot se habían separado (posteriormente también me dijero que era un parón temporal). Una excelente banda de «cosa rara porque sí» (o math-rock, que dirían otros) que sería una pena que nos perdiéramos, así que confío en que finalmente sea un parón temporal y no definitivo. Tras buscarles una banda sustituta, que llegó como una revelación, mi selección queda así:

  • Sandford Music Factory son la banda antes conocida como Sweet Oblivion Band, que tuvieron que cambiar su nombre por problemas de derechos de autor. Son de San Sadurniño y practican un rock alternativo con mucha influencia de las bandas de la escena de Seattle de los 90 (mismamente Pearl Jam) pero con algún arreglo más setentero. Bajo este nombre han publicado dos discos: AWEN, en 2011, y Natural Behaviour este mismo año. Además, cuando todavía eran Sweet Oblivion Band habían publicado dos trabajos más.
    Natural Behaviour
  • Pölisong, con diéresis en la primera O a lo Motörhead nos traen un hard rock clasicote, muy americano en su sonido, desde las terribles tierras Ferrolanas (si habéis pasado por allí alguna vez entenderéis lo de terrible). Si su primer EP me gustó, su directo fue lo que definitivamente me enganchó. Una banda a la que es mejor no quitarle ojo de encima, porque prometen dar muchas alegrías.
    Polisong captura youtube
  • Supa Scoopa son ya unos veteranos en la escena gallega.Llegados de Vigo,con 14 años de recorrido, hace casi una década que publicaron su primer trabajo, y hace unos meses nos trajeron su ya cuarto disco. Su sonido stoner se mueve a veces hacia terrenos más hard rock y otras hacia el metal, y su directo es uno de los más sólidos y contrastados de la escena gallega. Ningún amante del stoner debería dejar de escucharlos. Supa Scoopa, stoner desde Vigo
  • Kowloon ponen la nota más metalera de este listado. Hace unos años muchos depositábamos nuestras esperanzas en que Presa Fácil fueran the next big thing en el metal gallego. Aquella joven banda acabaría por separarse pero sus miembros se mantendrían en activo en distintos proyectos. Kowloon es la banda en la que milita Yosi, el que fuera vocalista de aquella banda y que, como podrás comprobar en esta pista, nada tiene que ver con su homónimo ourensano de Los Suaves. Este verano pude verles en directo, y aunque el sonido de la sala deslució bastante la actuación de todos los grupos, me dejaron la sensación de ser una banda con mucho potencial. Tienen un EP de cuatro temas titulado Sentenciado a Vivir y actitud y tablas para llenar un escenario. Kowloon primer EP
  • The Soul Jacket han sido un descubrimiento de última hora para mi. Me los recomendó un colega la semana pasada, justo el mismo día que me ponía a pensar qué banda podía cerrar la lista. Así que era como una señal. Su música orbita distintos estilos: el blues, el rock sureño, el soul, el funk más primigenio… ejecutado todo con una técnica impecable. Llevo toda la semana con su segundo trabajo enganchado en el mp4, y mientras trabajaba también he podido darles una oída al primero y al tercero. No podría deciros qué tal el directo porque todavía no he podido verlos, pero me han garantizado que es espectacular.
    The Soul Jacket

Asumo que es una lista bastante ecléctica en cuanto a estilos, así que probablemente no haya muchos que vayan a disfrutar al 100% con todas las bandas aquí citadas, pero pegadles una oída porque son gente con mucho que aportar. La situación geográfica gallega y sus malas comunicaciones siempre ha obligado a las bandas a hacer un doble esfuerzo para darse a conocer, así que se merecen la oportunidad de un par de escuchas, que seguro que más de uno sacará de aquí algo interesante.

Media Queries para Apple Watch

Minientrada sobre CSS (y maquera muy a mi pesar) rápida mientras cocino una más musical para esta semana. ¿Cuál sería el tamaño de pantalla en una media query para aplicar un estilo CSS concreto a algo que se visualice en un dispositivo Apple Watch (aka El Reloj Manzanita)? Pues segú veo en github sería lo siguiente:

@media
  (max-device-width: 42mm)
  and (min-device-width: 38mm) { 
/*Aquí el código css a implementar*/
}

Si me voy enterando de otros dispositivos os los iré anunciando.

Tweet-crónica de la final del Eurobasket 2015

En mi cuenta de Twitter me dediqué a comentar la final del Eurobasket. Aquí queda resumido el partido:

Se acaba el Eurobasket 2015 ¿fin de ciclo en el baloncesto europeo?

Ya lo comentaba en el primer artículo sobre el Eurobasket: puede ser el último de Dirk Nowitzki, de Pau Gasol y hasta de Tony Parker. Los tres mejores jugadores Europeos de estos primeros años del siglo XXI.

Pau Gasol lanzando un tiro libre con España

La prensa durante muchos años no ha sido justa con ellos, y siempre se les ha posicionado un escalón por debajo de las leyendas del basket europeo de los 80, en España concretamente por detrás de las dos que jugaron en el Real Madrid: Drazen Petrovic y Arvydas Sabonis. Ambos dos jugones, desde luego, dos estrellas legendarias, pero también dos jugadores cuyas carreras están marcadas por un «lo que podría haber sido». En el caso de Petrovic por su temprana muerte, y en el caso de Sabonis por las lesiones sufridas durante su momento álgido en los ochenta que le llevaron a llegar a la NBA tarde y con una movilidad limitada. ¿Habría dominado los tableros de la NBA Arvydas de haberse ido en el 89? ¿Habría sido Petrovic un fijo en los all-star de mediados de los 90 de no ser por el accidente que se lo llevó? Siempre quedará la duda.

Pero de lo que no hay duda, y parece que muchos quieren obviarlo, es del palmarés en la mejor liga del mundo de los tres jugadores que nos ocupan. Repasemos cómo está la cosa:

  • Dirk Nowitzki:MVP de la liga regular en 2007, campeón y MVP de las finales en 2011, 13 veces all-star, 12 nominaciones en alguno de los quintetos ideales de la temporada (4 de ellas en el primero). Ahora mismo es el séptimo jugador que más puntos ha anotado en la historia de la NBA.
  • Pau Gasol:Cinco veces all-star, cuatro veces en uno de los quintetos ideales, dos veces campeón de la NBA con los Lakers, novato del año y miembro del mejor quinteto de novatos en 2002.
  • Tony Parker:MVP de las finales de la NBA en 2007, cuatro veces campeón con los San Antonio Spurs, seis veces all-star y cuatro veces nominado en uno de los quintetos ideales.

Nowitzki y Parker, que han disputado toda su carrera fieles a sus franquicias en Texas tienen a estas alturas garantizada la retirada de su dorsal cuando se retiren. Yo creo que Pau se merecería que al menos los Lakers también lo hagan con su 16, por aquellas tres finales consecutivas, coronándose en dos, alcanzadas como escudero de Bryant y referente interior de aquel equipo. O en Memphis, a los que guió a sus primeros play-off (y donde seguramente luciría al lado de la de su hermano Marc, del que estoy seguro que acabarán retirando su camiseta los Grizzlies).

Tony Parker con los Spurs

En cuanto a palmarés FIBA ahí es Pau Gasol quien se lleva la palma. Con la selección española absoluta se ha calzado 9 medallas (además de haber ganado varias con las categorías inferiores, entre ellas el Mundial Junior de 1999): oro en el Mundial 2006, platas en las olimpiadas de Pekín y Londres y dos oros, tres platas y un bronce en los Eurobasket. Y todavía nos queda saber de qué color será el noveno metal, en la final que se disputará hoy. Creo que podemos dar por hecha su nominación al quinteto ideal y el título de máximo anotador del torneo, y si España se hace con el oro lo más probable es que se lleve otro MVP. Mejor echad un ojo a su palmarés en la Wikipedia, que se me hace muy largo listarlo.

Si bien Parker no tiene un palmarés tan largo con su selección, tampoco es moco de pavo: Campeón de Europa sub-18 en el 2000, bronce en el Eurobasket 2005, plata en 2011 y oro en 2013, cuando también fue MVP. Este año se ha convertido en el máximo anotador de la historia de los Eurobasket.

Nowitzki es el que presenta un palmarés FIBA más corto: bronce en el mundial de Indianápolis 2002 y plata en el Eurobasket 2005. Por otra parte Pau y Parker tenían a su alrededor selecciones poderosas que les llevaron a ganar títulos, mientras que en el caso alemán era Nowitzki peleando solo, junto a un equipo voluntarioso pero de talento limitado. En 2005 fue MVP a pesar de que Alemania no ganó en Eurobasket. Si quieres saber el por qué mírate su exhibición de España en las semifinales (te la podría comparar con la de Pau ante francia en el presente Eurobasket). Este año superó a Galis como máximo anotador de la historia de los Eurobasket, pero a su vez fue superado por Tony Parker, quedando así como el segundo a nivel histórico.

Nowitzki en la preparación

Pau Gasol, el mejor jugador español de baloncesto de la historia. Tony Parker, el mejor francés. Dirk Nowitzki, el mejor alemán. Si gente como Schrempf, Kukoc, Sabonis, Marciulionis, Divac o Petrovic abrieron el camino a que los Europeos pudieran jugar en la NBA, estos tres demostraron que además un jugador europeo podía liderar a un equipo campeón. Como ya dije, este probablemente ha sido su último Eurobasket. Nos quedan un par de años para seguir disfrutando de su juego (puede que de Parker algo más), así que aprovechemos. Ball is life.

Creando una tabla con los bordes redondos con CSS3

¿Cómo puede redondear los bordes de una tabla con CSS? Ponerle bordes al objeto table o al tr no va a funcionar, hay que hacerlo sobre el primer o el último td de la fila.

table { border-collapse: separate; }
td { border: solid 1px #000; }
/*PARA LA PRIMERA FILA TIENES DOS OPCIONES*/
/*Así sería la cosa
si has empezado con un tr
*/
tr:first-child td:first-child { border-top-left-radius: 10px; }
tr:first-child td:last-child { border-top-right-radius: 10px; }
tr:first-child td:only-child { border-top-right-radius: 10px;
border-top-left-radius: 10px; }
/*si en lugar de eso has usado la etiquetas thead y th es más
sencillo todavía*/
th:first-child { border-top-left-radius: 10px; }
th:last-child { border-top-right-radius: 10px; }
th:only-child { border-top-right-radius: 10px;
border-top-left-radius: 10px; }

/*Y ASÍ PONEMOS EL PIE*/
tr:last-child td:first-child { border-bottom-left-radius: 10px; }
tr:last-child td:last-child { border-bottom-right-radius: 10px; }
tr:last-child td:only-child { border-bottom-right-radius: 10px;border-bottom-left-radius: 10px; }

Cuatro webs de humor para leer con el café

Siempre he sido gran fan del formato viñeta/tira cómica, devorando durante años desde el humor inteligente del gran Forges al frikismo referencial de Cels Piñol en Fan Letal / Fan con Nata, los conejitos y las mentiras de Andy Riley y desde luego sin olvidar al maestro de maestros Watterson con su esencial Calvin & Hobbes. A día de hoy conservo esa costumbre, pero en lugar de hacerlo en papel suelo ver estas viñetas on-line. La de Forges generalmente en su cuenta de Twitter, donde suele poner la viñeta que publica ese día en El País. ¿Y qué más? Pues estos cuatro sitios de humor:

  • O Bichero: Si alguien ha conseguido un equivalente en humor gráfico a una mezcla de Vicente Risco, licor café casero, pulpo á feira en plato de madera y mil gaiteiros en el Obradoiro ese ha sido Dávila. Un genio que ha capturado la idiosincrasia gallega en sus viñetas, con un humor muy de aquí. Entiendo que quien no sea gallego, o no haya vivido en Galicia, se pueda encontrar un pelín perdido con algunas, pero entendiendo el contexto la risa es segura. No suele actualizar el blog a diario, pero podeis encontrar sus viñetas diariamente en El Faro de Vigo.
  • Dilbert: Todo un referente en el campo del humor geek y del humor de oficina. ¿Te gustó The Office? Pues Dilbert es su equivalente en viñetas. Gatos malvados que dirigen empresas, CEO’s tontorrones y abusones, ingenieros que se entienden mejor con las máquinas que con los humanos, compañeros desmotivadores por excelencia… la tragedia exasperante de la vida corporativa llevada con humor.
  • HTZ Comic: HTZ Comic, a cargo del inefable Koopa, es como el hijo bastardo entre Dilbert y Fanhunter. Lo geek se da la mano con lo friki y de lunes a viernes nos regala una pequeña ración de risas y disparos imposibles.
  • Savage Chickens: El estilo de Dough Savage es curioso, ya que sus viñetas parecen estar pintadas sobre post-its. Estilísticamente estos pollos, y otros personajes recurrentes como Timmy el cubo de Tofu, oscilan entre el humor laboral, el frikismo referencial y el más puro y duro humor absurdo.

En resumidas cuentas, ya no tienes excusa para no desayunar con una sonrisa.

Borrar un evento de MySQL

Hoy me preguntaba en la entrada sobre Eventos en MySQL cómo se borran, así que en vez de contestar en los comentarios voy a dejarlo por aquí en una minientrada general. ¿Cómo se borra un evento? Pues con Drop Event, cuya sintaxis es DROP EVENT [IF EXISTS] event_name. En el viejo ejemplo creábamos uno llamado e_ActualizaSaldoDiario, así que si quisiéramos borrarlo nos bastaría con hacer lo siguiente:

DROP EVENT e_ActualizaSaldoDiario

En caso de que el evento que intentamos borrar no existiera (por haberse borrado previamente) nos devolverá un error. Si queremos evitar esto podemos añadir IF EXISTS:

DROP EVENT IF EXISTS e_ActualizaSaldoDiario

Recordad que para borrarlos, igual que para crearlos, tenéis que tener permisos sobre los eventos en el schema.

Obteniendo un objeto con los datos de un código postal en Google Maps

Van a venir una serie de entradas sobre Google Maps próximamente, y espero que también sobre Open Street Map. Vamos con una simple y cortita ¿cómo podemos obtener un objeto con los datos de un código postal concreto? El API de Google Maps nos permite pedírselos y nos los devuelve en formato XML o JSON.

Vemos dos ejemplos prácticos, el primero nos devuelve el JSON:
http://maps.googleapis.com/maps/api/geocode/json?address=15330&region=ES&sensor=false

Y este es la versión con XML:
http://maps.googleapis.com/maps/api/geocode/xml?address=15330&region=ES&sensor=false

La sintaxis sería la siguiente:

  • Primero la llamada al API de geocodificación de Google Maps: http://maps.googleapis.com/maps/api/geocode/
  • Seguidamente el formato, que puede ser xml o json
  • Como parámetros pasamos en address el código postal, y en region el país (si no buscará en los EEUU por defecto).

En los próximos días seguiremos tratando el tema.

Se acaba la era Nowitzki en Alemania: Danke, Dirk

Lo twitteaba esta tarde: No podré ver el España-Alemania, una pena porque marcará el final de una era, ya sea la de Nowitzki o la de la generación Juniors de oro. Y es que este era el último Eurobasket de Dirk Nowitzki con la selección alemana. Tras el primer partido frente a Islandia di las claves que me hacían sospechar que la despedida no iba a ser todo lo gloriosa que merecería una leyenda de su calibre. Pero en todo caso, toca despedir a uno de los grande del baloncesto europeo de las últimas décadas con un aplauso y con jugadones en el recuerdo. Y todavía le disfrutaremos un año o dos más en la NBA, en esos Mavericks donde ha permanecido toda su carrera americana.