Page 1 of 1

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

Posted: Fri Nov 29, 2019 8:16 pm
by Ticketa
Привет,
Искам да изведа данни от дадена седмица , например седмица 47

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

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

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

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

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

Това е фундаментална разлика, но има ли как да бъде преодоляна?

Posted: Sat Nov 30, 2019 12:07 pm
by anonimen
Ако полето ти е от тип DATE, не би трябвало да са ти нужни такива трансформации - https://www.w3schools.com/sql/func_mysql_week.asp

Пишеш `WHERE WEEK(data) = 47` и толкоз.

Posted: Sat Nov 30, 2019 8:56 pm
by Ticketa
Полето беше varchar промених го с данните на DATE. Ок. Успешно търся по седмица по твоя пример, обаче имам данни за 2014, 2015, 2016, 2017, 2018, 2019.

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

Posted: Sun Dec 01, 2019 1:05 am
by Revelation
Както имаш WEEK(), така имаш и YEAR(). На същия принцип можеш да работиш.

Posted: Tue Dec 03, 2019 1:03 pm
by chepa
SELECT * FROM `table` WHERE WEEK(data) = '47' AND YEAR(data) = 2019?

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

Posted: Tue Dec 03, 2019 3:09 pm
by dakata__92
Ticketa wrote:Привет,
Искам да изведа данни от дадена седмица , например седмица 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]

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

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

Posted: Tue Dec 03, 2019 6:02 pm
by Revelation
dakata__92 wrote:
Ticketa wrote:Привет,
Искам да изведа данни от дадена седмица , например седмица 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, а е ключова дума.

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