powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает DateDiff
7 сообщений из 7, страница 1 из 1
Не работает DateDiff
    #39875561
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Поставил условие на дату, чтобы получить только свежие. В результат попадают старые. К тому же MySql сам меняет мне функции при сохранении представления. Вот запрос и результат на скрине
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT
  `История по наличию`.`код` AS `код`,
  `История по наличию`.`дата` AS `дата`,
  DATE_FORMAT(`История по наличию`.`дата`, '%d/%m/%y') AS `день`,
  TIME_FORMAT(`История по наличию`.`дата`, '%H:%i:%S') AS `время`,
  `История по наличию`.`наименование` AS `наименование`,
  `История по наличию`.`действие` AS `действие`,
  `История по наличию`.`количество` AS `количество`,
  `История по наличию`.`стало` AS `стало`,
  `История по наличию`.`примечание` AS `примечание`,
  `История по наличию`.`документ` AS `документ`
FROM `История по наличию`
WHERE DATEDIFF(`История по наличию`.`дата`,CURDATE())<30
ORDER BY 1 DESC



DbForgeStudio сам меняет условие при сохранении представления
Код: sql
1.
WHERE TO_DAYS(`История по наличию`.`дата`) - TO_DAYS(CURDATE()) < 30
...
Рейтинг: 0 / 0
Не работает DateDiff
    #39875568
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаев,

Покажите полный DDL таблицы.
Скорее всего вы перепутали порядок аргументов в datediff.

Почему заменяется функция - не знаю, но заменяется на эквивалентную конструкцию.

Назвать объекты русскими буквами с пробелами - мина замедленного действия.
...
Рейтинг: 0 / 0
Не работает DateDiff
    #39875569
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, а что такое DLL таблицы?
Может это...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE
DEFINER = 'mtrx'@'%'
VIEW mtrx.История
AS
SELECT
  `История по наличию`.`код` AS `код`,
  `История по наличию`.`дата` AS `дата`,
  DATE_FORMAT(`История по наличию`.`дата`, '%d/%m/%y') AS `день`,
  TIME_FORMAT(`История по наличию`.`дата`, '%H:%i:%S') AS `время`,
  `История по наличию`.`наименование` AS `наименование`,
  `История по наличию`.`действие` AS `действие`,
  `История по наличию`.`количество` AS `количество`,
  `История по наличию`.`стало` AS `стало`,
  `История по наличию`.`примечание` AS `примечание`,
  `История по наличию`.`документ` AS `документ`
FROM `История по наличию`
WHERE TO_DAYS(`История по наличию`.`дата`) - TO_DAYS(CURRENT_TIMESTAMP()) < 30
ORDER BY 1 DESC;
...
Рейтинг: 0 / 0
Не работает DateDiff
    #39875571
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE mtrx.`История по наличию` (
  код int(11) NOT NULL AUTO_INCREMENT,
  дата datetime DEFAULT CURRENT_TIMESTAMP(),
  наименование int(11) DEFAULT NULL,
  действие int(11) DEFAULT NULL,
  количество double DEFAULT NULL,
  стало double DEFAULT NULL COMMENT 'наличие в тот момент',
  примечание varchar(255) DEFAULT NULL,
  документ int(11) DEFAULT NULL,
  изм timestamp NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (код)
)
ENGINE = MYISAM,
AUTO_INCREMENT = 205109,
AVG_ROW_LENGTH = 46,
CHARACTER SET utf8mb4,
CHECKSUM = 0,
COLLATE utf8mb4_general_ci;

ALTER TABLE mtrx.`История по наличию`
ADD INDEX `Действия с товаромИстория по наличию` (действие);

ALTER TABLE mtrx.`История по наличию`
ADD INDEX `ТоварыИстория по наличию` (наименование);
...
Рейтинг: 0 / 0
Не работает DateDiff
    #39875572
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос отпал
Вот так сравнивает нормально
Код: sql
1.
WHERE TO_DAYS(`История по наличию`.`дата`) > TO_DAYS(CURRENT_TIMESTAMP()) - 30


А вот так нет
Код: sql
1.
WHERE TO_DAYS(CURRENT_TIMESTAMP()) - TO_DAYS(`История по наличию`.`дата`) > 30


Странно. Я думал, что от перестановки слагаемых сумма не меняется. А ещё пришлось привести обе даты к одному типу.
MySql с капризами, но слушается :)

Спасибо
...
Рейтинг: 0 / 0
Не работает DateDiff
    #39875575
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаев,

Это неэквивалентная перестановка, вы знаки путаете.
...
Рейтинг: 0 / 0
Не работает DateDiff
    #39875655
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, точно :)
Перепутал знакки > и <
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает DateDiff
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]