|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Добрый день товарищи.случилась такая оказия ,никогда не работал с my sql и тут понадобилось перевести БД из sqlite в my sql вроде ничего сложного,но никак не могу победить один запрос вообщем ситуация такая имеем в таблице некое значение даты ( тип datetime) нужно от текущей даты-времени и этой даты в таблице высчитать разницу и вывести пользователю в виде 00д 00ч 00 м в sqlite у меня был запрос вот такой Код: sql 1. 2. 3. 4. 5.
как такое повторить в mysql ? И второй вопрос как задать локальное время -функция Now() и localtime() выдают GMT ,может изза того что физически база данных находится в европе или все же есть какие то способы записать локальное время клиента? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:35 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Как вариант, при помощи TIMESTAMPDIFF() получить разность дат/времени в секундах, а затем с секундами выполнить арифметические действия. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:43 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
vkle, а как это на бумаге выглядит.я не знаком с синтаксисом mysql к сожалению,а он довольно прилично от sqlite отличается судя по всему. select TIMESTAMPDIFF(now(),users.data) from users where UserId=999929921 даже на этот простой запрос воркбенч ругается ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:50 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
asv79, Синтаксис мало отличается. То ли описание функции Вы прочитали только частично, то ли потеряли первый аргумент. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 20:01 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Хотя, секунды Вам и не нужны. В принципе, разницу сразу в минутах можно получить, а потом арифметика... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 20:05 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
vkleХотя, секунды Вам и не нужны. В принципе, разницу сразу в минутах можно получить, а потом арифметика... ну вот хотя бы такой запрос select TIMESTAMPDIFF(minute ,now(),users.data) from users where UserId=999929921 первая дат больше второй-возвращает отрицательное число... как дальше прикрутить в один запрос всю математику я понятия просто не имею .в склайте это делается на раз два ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 21:57 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
vkleasv79, Синтаксис мало отличается. То ли описание функции Вы прочитали только частично, то ли потеряли первый аргумент. а как занести в таблицу локальное время? в склайте это 'now','localtime' ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 21:59 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
вообщем ответ был найден с помощью специалиста по MySQL и выглядит это вот так Код: sql 1. 2. 3. 4. 5. 6.
выводится разница в днях ,часах ,минутах. если говорить о похожем синтаксисе в склайте тот же код Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 22:20 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
asv79 Код: sql 1.
Осторожно, у этой функции ограничение в '838:59:59' часов/минут/секунд, т.е. чуть больше месяца. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 23:03 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Код: sql 1. 2.
Если users.date всегда в прошлом, то можно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 00:22 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
miksoft,к сожалению вы правы и какой выход из данной ситуации? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 13:42 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
miksoft,userdata всегда в прошлом 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 13:43 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
asv79userdata всегда в прошлом 100%Если это не поддержано на уровне структуры (а оно не поддержано, ибо MySQL игнорирует CHECK CONSTRAINT) - то словам грош цена. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 13:49 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Akina, Какое это имеет отношение к тому что timediff имеет интервал 34 дня всего? Мне уже помогли,запрос работает ,нужно теперь победить функцию tumediff ,так как у меня в таблице будут значения и 2007 года,тобишь разница более 10 лет с текущей датой ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 14:36 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Akinaasv79userdata всегда в прошлом 100%Если это не поддержано на уровне структуры (а оно не поддержано, ибо MySQL игнорирует CHECK CONSTRAINT) - то словам грош цена. И да оно поддержано еще на уровне ввода даты,у пользователя физически ограничена возможность ввестм дату раньше 2001 года и позже текущей ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 14:41 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
asv79оно поддержано еще на уровне ввода датыЕрунда. Всё равно что нигде. asv79Какое это имеет отношение к тому что timediff имеет интервал 34 дня всего?Именно к этому моменту - никакого. asv79высчитать разницу и вывести пользователю в виде 00д 00ч 00 м Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 15:27 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Хотя для вычисления разницы в днях лучше воспользоваться выражением 21773477 от miksoft - ибо DATEDIFF чхал на время и может дать отрицательные часы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 15:32 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Akina, спасибо большое ,ваш запрос считает идеально ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 18:21 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Akina, этот запрос считает некорректно,к примеру тест две даты с дельтой 10 минут -запрос возвращает разницу 23 часа там где то ошибка сидит практически в сутки .а ваш запрос просто идеален.огромное вам спасибо. если еще подскажите как заставить mysql русские буквы читать,писать поставлю вам памятник) таблица натроена utf8 ,столбец тоже ,в pom.xml -unt8 суть проблемы вот тут изложил https://ru.stackoverflow.com/questions/925664/ ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 18:31 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
AkinaХотя для вычисления разницы в днях лучше воспользоваться выражением 21773477 от miksoft - ибо DATEDIFF чхал на время и может дать отрицательные часы. этот запрос не считает каким то непонятным образом и дает некоректную разницу ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 18:33 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Akina Код: sql 1.
вот это 100% рабочий вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 18:50 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
Ребят у кого будет проблема с кирилицей ,вся суть лежит в jdbc,при создании подключения нужно прописать руками вот такой текст в конец вашего url ?useUnicode=true&characterEncoding=UTF-8 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2018, 19:19 |
|
Помощь с SQL запросом
|
|||
---|---|---|---|
#18+
asv79запрос считает некорректно,к примеру тест две даты с дельтой 10 минут -запрос возвращает разницу 23 часаНу собсно я и указал, что вместо DATEDIFF надо использовать разность TO_DAYS, как у Майка. Просто DATEDIFF перед вычислением разности тупо отбрасывает время, а потому когда время в первом аргументе меньше, чем во втором, получается плюс день, и соответственно считается отрицательное время. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2018, 07:45 |
|
|
start [/forum/search_topic.php?author=smu127&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 444ms |
total: | 742ms |
0 / 0 |