Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Convertir 1 en '01'

Estas en el tema de Convertir 1 en '01' en el foro de Mysql en Foros del Web. Hola a todos, Necesito realizar una consulta donde, por comparaciones de número de semanas (1 a 52), necesito que del 1 al 9 se conviertan ...
  #1 (permalink)  
Antiguo 15/01/2010, 10:09
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 15 años, 3 meses
Puntos: 2
Convertir 1 en '01'

Hola a todos,

Necesito realizar una consulta donde, por comparaciones de número de semanas (1 a 52), necesito que del 1 al 9 se conviertan en strings '01 - '09'. ¿Alguien sabe como maquearlo en una consulta? Ahora esoy aplicando lo siguiente:

CAST(Concat(Ano, Semana) as UNSIGNED), pero me encuentro el problema que la semana 52 del 2009 -> 200952 es mayor que la semana 1 del 2010 -> 20101 (que si fuera, 201001 esto no me pasaría...) se entiende?

Gracias!
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #2 (permalink)  
Antiguo 15/01/2010, 10:24
 
Fecha de Ingreso: octubre-2008
Ubicación: Xalapa, Ver
Mensajes: 27
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: Convertir 1 en '01'

con un if puedes condicionar si la semana es menor a 10 entonces le concatesas un 0 al principio.

Código MySQL:
Ver original
  1. SELECT IF(9<10,CONCAT(0, 9),'algo');

saludos
  #3 (permalink)  
Antiguo 15/01/2010, 10:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: Convertir 1 en '01'

Hay una función mucho más directa y simple, que se usa para eso: LPAD() y su contraparte RPAD().
Cita:
LPAD(str,len,padstr)

Retorna la cadena str, alineado a la izquierda con la cadena padstr a una longitud de len caracteres. Si str es mayor que len, el valor retornado se acorta a len caracteres.
Código MySQL:
Ver original
  1. SELECT LPAD(9,2,'0');
  2.  
  3. +---------------+
  4. | LPAD(9,2,'0') |
  5. +---------------+
  6. | 09            |
  7. +---------------+
  8. 1 row in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 15/01/2010, 12:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 10 meses
Puntos: 300
Respuesta: Convertir 1 en '01'

y por qué no usas YEARWEEK(campofecha)
observa lo que te muestra cuando la aplicas, te muestra el año y el mes, si la fecha es cualquier día del mes de enero de 2010, te muestra esto: 201001
usa esa función para ordenar
  #5 (permalink)  
Antiguo 18/01/2010, 04:17
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Convertir 1 en '01'

Gracias a todos por vuestras respuestas.

Apliqué la solución de gnzsoloyo, me fue perfecta

Gracias de todas formas al resto (jurena, no pude aplicar tu solución pq los datos los tengo almacenados en campos distintos -> un campo AÑO numérico y un campo SEMANA numérico.), pero gracias lo tendré presente, pq tampoco conocía esa función!
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:56.