SQL заявка не изважда резултат по избрана седмица

Ticketa

Registered
Привет,
Искам да изведа данни от дадена седмица , например седмица 47

В базата данни имам записани данни , като една от колоните е с име data в тази дата записвам датата със следния синтаксис: ден-месец-година 18-11-2018

Опитах по следния начин да си направя заявката , обаче не ми извежда резултати:

SELECT * FROM `table` WHERE week(DATE_FORMAT(data, "%Y-%m-%d"))=47

Използвам функцията week за да проверя седмицата. Идеята ми е да групирам всички записи от Х седмица.

Вероятно разликата е, че те връщат различни типове данни. WEEK () връща цяло число, докато DATE_FORMAT () връща символна стойност.

Това е фундаментална разлика, но има ли как да бъде преодоляна?
 
Ако полето ти е от тип DATE, не би трябвало да са ти нужни такива трансформации - https://www.w3schools.com/sql/func_mysql_week.asp

Пишеш `WHERE WEEK(data) = 47` и толкоз.
 
Полето беше varchar промених го с данните на DATE. Ок. Успешно търся по седмица по твоя пример, обаче имам данни за 2014, 2015, 2016, 2017, 2018, 2019.

Съответно заявката ми изкарва за седмица 47 всички данни за всичките години, а аз искам данните които се извеждат да са за конкретна година тоест - 2019 в момента
 
Ticketa каза:
Привет,
Искам да изведа данни от дадена седмица , например седмица 47

В базата данни имам записани данни , като една от колоните е с име data в тази дата записвам датата със следния синтаксис: ден-месец-година 18-11-2018

Опитах по следния начин да си направя заявката , обаче не ми извежда резултати:

SELECT * FROM `table` WHERE week(DATE_FORMAT(data, "%Y-%m-%d"))=47

Използвам функцията week за да проверя седмицата. Идеята ми е да групирам всички записи от Х седмица.

Вероятно разликата е, че те връщат различни типове данни. WEEK () връща цяло число, докато DATE_FORMAT () връща символна стойност.

Това е фундаментална разлика, но има ли как да бъде преодоляна?
Колега, е как ще ти извежда информация!? На DATE_FORMAT подаваш колона data, която е и запазена дума в SQL. Трябва да я поставиш в кавички за да се интерпретира, като име на колона в таблицата.
[sql]SELECT * FROM `table` WHERE week(DATE_FORMAT(`data`, "%Y-%m-%d"))=47[/sql]

Виж дали така ще ти проработи. При мен заявката работи с моя таблица и колона в нея.
 
dakata__92 каза:
Ticketa каза:
Привет,
Искам да изведа данни от дадена седмица , например седмица 47

В базата данни имам записани данни , като една от колоните е с име data в тази дата записвам датата със следния синтаксис: ден-месец-година 18-11-2018

Опитах по следния начин да си направя заявката , обаче не ми извежда резултати:

SELECT * FROM `table` WHERE week(DATE_FORMAT(data, "%Y-%m-%d"))=47

Използвам функцията week за да проверя седмицата. Идеята ми е да групирам всички записи от Х седмица.

Вероятно разликата е, че те връщат различни типове данни. WEEK () връща цяло число, докато DATE_FORMAT () връща символна стойност.

Това е фундаментална разлика, но има ли как да бъде преодоляна?
Колега, е как ще ти извежда информация!? На DATE_FORMAT подаваш колона data, която е и запазена дума в SQL. Трябва да я поставиш в кавички за да се интерпретира, като име на колона в таблицата.
[sql]SELECT * FROM `table` WHERE week(DATE_FORMAT(`data`, "%Y-%m-%d"))=47[/sql]

Виж дали така ще ти проработи. При мен заявката работи с моя таблица и колона в нея.


DATA не е запазена дума в SQL, а е ключова дума.

Ключовите думи не е задължително да се ограждат в кавички. Само резервираните трябва.
 

Горе