Poner 0 al número de la semana en sql

Tengo la siguiente consulta que me obtiene el año y la semana de una fecha:

SELECT CONCAT(YEAR(sw_sowing.date),"-", WEEKOFYEAR(sw_sowing.date)) AS week
FROM sw_sowing
GROUP BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)
ORDER BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)

Lo cual me arroja el siguiente resultado:

-------------------
|      week       |
-------------------
|   2016-1        |
-------------------
|   2016-5        |
-------------------
|   2016-10       |
-------------------
|   2016-20       |
-------------------

Lo que yo quiero es agregar un 0 antes a las semanas que tiene un dígito y la consulta quedé así:

-------------------
|      week       |
-------------------
|   2016-01       |
-------------------
|   2016-05       |
-------------------
|   2016-10       |
-------------------
|   2016-20       |
-------------------

He intentado lo siguiente pero no me funciona:

SELECT CONCAT(YEAR(sw_sowing.date),"-", LPAD(WEEKOFYEAR(sw_sowing.date),2,'0')) AS week
FROM sw_sowing
GROUP BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)
ORDER BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)

De igual manera intenté con este:

SELECT CONCAT(YEAR(sw_sowing.date),"-", RIGHT('0' + RTRIM(WEEKOFYEAR(sw_sowing.date)), 2)) AS week
FROM sw_sowing
GROUP BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)
ORDER BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)

Espero me puedan ayudar o si estoy haciendo mal la consulta

Gracias

3
задан 09.12.2016, 23:31
4 ответа

Пробуй меняя первую часть с чем-то asГ-:

SELECT CONCAT(YEAR(sw_sowing.date), '-',LPAD(WEEK(sw_sowing.date), 2, '0'))
2
ответ дан 24.11.2019, 12:12
  • 1
    Нет. оно я не функционирует, поместив эту консультацию pá gina он падает! :( –  Fabian Sierra 09.12.2016, 21:48
  • 2
    Уже я сделал другое изменение... –  Garrizano 09.12.2016, 21:51
  • 3
    Acomó дай это твоей консультации –  Garrizano 09.12.2016, 21:51
  • 4
    Если я funcionó большое спасибо! habí в помещенный плохо funció n! –  Fabian Sierra 09.12.2016, 21:53

Чтобы наполнять с пустыми местами существует функция LPAD. Действительно эта функция то, что он делает, состоит в том, чтобы наполнять указанным символом цепь до тех пор, пока у этой не будет конфигурировавшая длина.

LPAD('dia', 8, '0');
Result: '0000dia

Пример использования функции LPAD был бы:

SELECT LPAD("34",5,'0') FROM DUAL;

Вывода этой консультации ‘00034‘, так как мы показали, что нужно наполнять с пустыми местами до тех пор, пока в цепи не будет 5 символов длиной.

В этом случае длина серьезной цепи 2.

SELECT CONCAT(YEAR(sw_sowing.date),"-", LPAD(WEEKOFYEAR(sw_sowing.date),2,'0')) AS week
FROM sw_sowing
GROUP BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)
ORDER BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)

LDAP MYSQL

LDAP

2
ответ дан 24.11.2019, 12:12

Я сделал этот пример, но я не уверен, функционировал ли я в mySQL, ты мог бы проверять это и давать тебе идею как делать это в твоем случае.

Надеялся, что он тебе полезен:

declare @date as datetime
set @date = '2016-12-09'

--Ejemplo con los datos obteniendo partes de la fecha
SELECT YEAR(@date) as [Año]
SELECT MONTH(@date) as [Mes]
SELECT day(@date) as [Mes]

--Ejemplo concatenandole 00 al inicio... y tomando los ultimos dos digitos
-- Dato 12 , resultado 0012, con el right tomo los dos digitos de derecha a izquierda = 12
-- Dato 3 , resultado 003, con el right tomo los dos digitos de derecha a izquierda = 03
SELECT right(concat('00', MONTH(@date)),2) as [Mes]
SELECT right(concat('00', day(@date)),2) as [Mes]

-- Sin tomar los ultimos dos digitos
SELECT concat('00', day(@date)) as [Mes]
-1
ответ дан 24.11.2019, 12:12
  • 1
    Это не функционирует в MySQL. –  sstan 09.12.2016, 21:49
  • 2
    Ok, но возможно давать идею, ища эквивалентные функции для mySQL –  Cristina Carrasco 09.12.2016, 22:05

Ты можешь предпочитать применять формат в дату:

Пример:

SELECT CONVERT(VARCHAR, sw_sowing.date, 103) AS [week]
FROM sw_sowing
GROUP BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)
ORDER BY YEAR(sw_sowing.date), WEEKOFYEAR(sw_sowing.date)

AnotaciГіn: я рекомендую тебе использовать другие слова для иначе колонн.

-1
ответ дан 24.11.2019, 12:12