--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/1e7a1759-22cf-4f25-979c-45a661667058n%40googlegroups.com.
Вот так можно отдельно выгребать дату и время в
MySQL
SELECT
DATE_FORMAT(colName,
'%Y-%m-%d')
DATEONLY,
DATE_FORMAT(colName,'%H:%i:%s') TIMEONLY
Вот так можно отдельно выгребать дату и время в MySQL |
SELECTDATE_FORMAT(colName, '%Y-%m-%d') DATEONLY, |
-- Вы получили это сообщение, поскольку подписаны на группу "ClaList". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com |
. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/HE1PR0901MB143364917826CCDC9D0A6A3EB8989%40HE1PR0901MB1433.eurprd09.prod.outlook.com. |
> А что это мне даст?
Во-первых, в теле WHERE
можно сказать что-то подобное
CAST((DATE_FORMAT(colName, '%d')
DATEONLY) AS integer) <= 15
Во-вторых, за основу курсора, CTE или временной таблички можно взять зарос
select distinct DATE_FORMAT(colName, '%Y-%m') DATEONLY)
и конечно покурить мануал на тему курсора, CTE или временной таблички (по вкусу)
|
". |
|
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList
".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес
clalist+unsubscribe@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/877440579.20210303221350%40gmail.com.
|
|
|
|
|
-- С уважением, Igor mailto:imsm...@gmail.com |
-- Вы получили это сообщение, поскольку подписаны на группу "ClaList". |
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com. |
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке |
-- Вы получили это сообщение, поскольку подписаны на группу "ClaList". |
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/HE1PR0901MB14334D90018B363A029FE78DB8989%40HE1PR0901MB1433.eurprd09.prod.outlook.com. |
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/509013785.20210303212600%40gmail.com.
. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAHCTFtF_e%3DZfAbK7jD5AmKbRv1ZNdm_eE%3D_MQ0LeLdt%2B9P-JoQ%40mail.gmail.com. |
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/707042254.20210304001605%40gmail.com.
. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAOv4sAj6Aj2SGHk0%3DjDK-Bxp3tCeRZF7B7FP4uvSXCxbfEvKjA%40mail.gmail.com. |
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/1439462455.20210304004216%40gmail.com.
. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAOv4sAgvWZLu1B2Z6VvYPvbRLi4FTpaNEufsB25n3ziy-ox00w%40mail.gmail.com. |
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/975415424.20210304011200%40gmail.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/975415424.20210304011200%40gmail.com.
. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAOv4sAg_cWpLR9WYx_T%3Dd_ctdWoJUyzbMNJ%3D8i0Vn3UGsSZy1g%40mail.gmail.com. |
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAJ4HZHtQBvLyGT1nVVpPF_1TxTxnvo-WzHRw8wk%2BqDq9BjVVRQ%40mail.gmail.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAOv4sAh92S99w_N9gu5bN8219EZAMYx48G9MueuMsff_jAxU4w%40mail.gmail.com.
. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAJ4HZHsUNSJk_QxZ6o4nBKfoZV1dYi5UQsve-OK%2B6J34NUw9oA%40mail.gmail.com. |
Здравствуйте, Alexander.
У вас тут опять привязка не к моменту времени, а отдельно к числу, отдельно к месяцу, отдельно к году и отдельно к часам.
Ваш запрос предполагает, что заведомо существует хотя бы одна запись, датированная 15-м числом заданного месяца и имеющая време до полудня.
Но такой запись в базе может и не быть! И последней записью, соответствующей критерию поиска может стать запись и за вчерашнее число, и за позавчерашнее, и за прошлый месяц, и даже за прошлый год.
А вы пытаетесь найти ее строго в диапазоне прошедшимх полусуток, и ни секундой ранее.
Преставьте себе ситуацию.
Например последние данные пришли 31 декабря 2020 года в 23:34:55. После этого данные в базу не поступали вплоть до 13 часов 15 января 2021 года (стояли жуткие морозы, и инфракрасный приёмник
не смог правильно декодировать поступающие сигналы).
И как вы с вашим запросом отловите эту прошлогоднюю запись по заданному условию "самая свежая запись до 12 часов 15 января 2021 года"? А она ведь по условиям задачи должна "отловиться".
И можно хоть стопятьсот раз группировать полученные данные, но толк-то от этого какой, если запрос по сути неточен?
Да и порядок (order) записей нет смысла отдельно задавать - они и так сортированы естественным образом, потому что "набивались" в базу хронологически.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/352222974.20210304205130%40gmail.com.
. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAJ4HZHuE9WHCHfLW1p_2jgCV5Yfs04T-VjLisc9G_9nf-5Ub3A%40mail.gmail.com. |
ОК, давайте разбираться. Вот ваш запрос:
select * from mytable where ROWID IN ( select max(ROWID) from mytable where DAY(TIME) < 15 OR (DAY(TIME) = 15 AND TIME(TIME) <= '12:00:00') ORDER BY YEAR(TIME) , MONTH(TIME) , DAY(TIME) GROUP BY YEAR(TIME) , MONTH(TIME) )
А теперь кусок из него:
where DAY(TIME) < 15 OR (DAY(TIME) = 15 AND TIME(TIME) <= '12:00:00')
В переводе на русский язык это означает:
те записи, где число месяца меньше 15, или те записи, где число месяца 15-е, но время до полудня.
Согласны?
Так разве вашим запросом может быть отобрана запись, датированная 30-м числом прошлого месяца?
Сами ответьте.
Да, задача действительно моя, а не ваша, но раз уж вы проявили интерес и приняли участие, то давайте обсуждать, а не обижаться и кричать, что вам плевать и т.д., и т.п.
P.S. Насчет нужного порядка. Если вы считаете естественный порядок случайным совпадением, то у меня есть еще и RowID, который увеличивается на единицу с каждой внесенной записью.
И ордерить по RowID значительно удобнее, чем по сложной конструкции "год-месяц-число".
И более того - в таблице есть готовое поле типа "datetime", по которому (будете смеяться) тоже можно неплохо сортировать. И в чем тогда состоит великий смысл "расчленения" datetime
на отдельно год, месяц и т.д. я, увы, не погу понять.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/31752928.20210304211850%40gmail.com.
Здравствуйте, Alexander.
У вас тут опять привязка не к моменту времени, а отдельно к числу, отдельно к месяцу, отдельно к году и отдельно к часам.
Ваш запрос предполагает, что заведомо существует хотя бы одна запись, датированная 15-м числом заданного месяца и имеющая време до полудня.
Но такой запись в базе может и не быть! И последней записью, соответствующей критерию поиска может стать запись и за вчерашнее число, и за позавчерашнее, и за прошлый месяц, и даже за прошлый год.
04.03.2021, в 19:51, Igor Smirnov <imsm...@gmail.com> написал(а): |
|
|
А за позапрошлый год может? Best regards, Alexander |
-- Вы получили это сообщение, поскольку подписаны на группу "ClaList". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес |
clalist+u...@googlegroups.com. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/BCB34B7D-60D8-4EF5-AF1B-84F6D452D2E6%40gmail.com. |
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/919053379.20210305080233%40gmail.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAPdikDDsVTLCGQn4kLWe2Nq8p61_doanHpbxSWAVQ1GWY8j0Kg%40mail.gmail.com.
Извините, если уже решено и это Оракл, но смысл я думаю понятен ADD_MONTHS функция добавления месяца к дате,
я просто решил вспомнить как это делается-интересно стало(бывает:))
Исходные данные:
Id DateTime
2 2021-01-13 00:00:00
1 2021-01-14 00:00:00
10 2021-01-15 06:00:00
8 2021-01-15 14:00:00
3 2021-02-01 00:00:00
5 2021-02-09 00:00:00
4 2021-02-11 00:00:00
12 2021-02-15 03:30:00
9 2021-02-15 08:15:00
11 2021-02-15 22:00:00
7 2021-03-01 00:00:00
6 2021-03-02 00:00:00
13 2021-05-15 12:30:00
14 2021-08-15 11:59:00
WITH s AS (SELECT ADD_MONTHS (TRUNC (SYSDATE, 'Y'), LEVEL - 1) rmonth
FROM DUAL
CONNECT BY LEVEL <= (TO_NUMBER(SUBSTR(TO_CHAR(SYSDATE,'MM/YYYY'),1,2)))+12
)
SELECT s.rmonth+ 14.5 rmonth, to_char((SELECT MAX(dt) dt FROM test WHERE dt<s.rmonth+ 14.5),'yyyy-mm-dd hh24:mi:ss') dt
FROM s
ORDER BY s.rmonth
;
Я задал период с начала года и плюс год вперед…
Дата 15 DateTime
15.01.2021 12:00:00 2021-01-15 06:00:00
15.02.2021 12:00:00 2021-02-15 08:15:00
15.03.2021 12:00:00 2021-03-02 00:00:00
15.04.2021 12:00:00 2021-03-02 00:00:00
15.05.2021 12:00:00 2021-03-02 00:00:00
15.06.2021 12:00:00 2021-05-15 12:30:00
15.07.2021 12:00:00 2021-05-15 12:30:00
15.08.2021 12:00:00 2021-08-15 11:59:00
15.09.2021 12:00:00 2021-08-15 11:59:00
15.10.2021 12:00:00 2021-08-15 11:59:00
15.11.2021 12:00:00 2021-08-15 11:59:00
15.12.2021 12:00:00 2021-08-15 11:59:00
15.01.2022 12:00:00 2021-08-15 11:59:00
15.02.2022 12:00:00 2021-08-15 11:59:00
15.03.2022 12:00:00 2021-08-15 11:59:00
С уважением Сергей
From: cla...@googlegroups.com [mailto:cla...@googlegroups.com] On Behalf Of Igor Smirnov
Sent: Wednesday, March 03, 2021 10:26 PM
To: cla...@googlegroups.com
Вопрос по SQL-запросам и представлениям
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес
clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/509013785.20210303212600%40gmail.com.