powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как в mysql получить первое число месяца текущего времени
62 сообщений из 62, показаны все 3 страниц
как в mysql получить первое число месяца текущего времени
    #39215337
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте , я новичок не судите строго
подробнее таблица dirty_data

ddl
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE `dirty_data` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `date_record` datetime NOT NULL,
  `date1_record` date NOT NULL,
  `lic_sch` varchar(16) DEFAULT NULL,
  `fam` varchar(64) DEFAULT NULL,
  `name` varchar(64) DEFAULT NULL,
  `otch` varchar(64) DEFAULT NULL,
  `kod_st` varchar(8) DEFAULT NULL,
  `kod_tn` varchar(8) DEFAULT NULL,
  `yearmon` date DEFAULT NULL,
  `data_new` int(11) DEFAULT NULL,
  `data_kon` int(11) DEFAULT NULL,
  `date_kon` date DEFAULT NULL,
  `base` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



В эту таблицу ежемесячно буду записывать по 60 тыс записей с помощью хранимки
поле date_record хочу использовать как текущее время записи (наверняка надо брать с минутами и секундами, тип посоветуйте)
поле date1_record будет использоваться как первое число месяца даты записи

остальные поля заполняет запрос

посоветуйте какие ключевые поля использовать , по каким полям лучше индексы построить,
поле лицевой счет будет уникальным


Еще список полей в таблице не окончательный(добавлю 6) , эти поля будут заполняться из веб сервиса
по полю лиц счет и полю первое чило месяца(т е date1_record)
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215416
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как по дефалту присвоить текущее время, и первое число месяца/?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215423
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7как по дефалту присвоить текущее время,timestamp on default current_timestamp

olegon7и первое число месяца/?только извне или триггером
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215425
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7поле date1_record будет использоваться как первое число месяца даты записиЗачем вообще это поле?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215428
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7поле лицевой счет будет уникальнымТ.е. по каждому лицевом счету будет не более одной операции (или что там в этой таблице) ?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215430
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

подозреваю, что уникальной будет пара "счёт-месяц"
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215465
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

правильно именно счет месяц

60 тыс лиц счетов январь
60 тыс лиц счетов феврвль

и т д
лицевые счета будут повторятся ежемесячно

поле date1_record и нужно для идентификации месяца ....
в основном запросы будкт строится получить счета за такой то месяц where date1_record=январь

поле date_record как время записи в таблицу уже с учетом часов минут
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215470
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например если записал 3 -его числа - а данные ошибочны , потому что записать одни и те же данные можно записать несколько раз в месяц что бы без проблем смог удалить лишние
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215484
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

а если так? timestamp (4) ограничить он будет выдавать месяц год так?

Запросом я могу выбрать из него нужный месяц?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215491
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7timestamp (4) ограничить он будет выдавать месяц год так?Нет.
В MySQL нет готового и удобного типа данных для хранения только года-месяца.
А timestamp(4) означает обычный timestamp с дополнительными четырьмя знаками после запятой. Т.е. с точностью до 100 мкс.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215557
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хранимка выполняется с ошибкой 1136 - Column count doesn't match value count at row 1

Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE DEFINER=`Oleg`@`` PROCEDURE `zap_copy`()
BEGIN
INSERT INTO dirty_data
	select 
kartab_askue.lic_sch from kartab_askue
where del=0 ;
END
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215559
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в чем причина?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215571
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все исправил)
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215572
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7,

Буквальный перевод - Количество колонок не соответствует количеству значений.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215603
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
так что вы посоветуете с датой
использовать 2 поля c типом datetime

по умолчанию они должны быть заполнены константой(null либо empty)

а если при инсерте в коде хранимки прописать

что бы поля date1_record и date_record заполнялись функциями now() и если есть такая функция обрезания до месяца год(если конечно есть такая в mysql)

вот хранимка
Код: 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.
25.
26.
27.
BEGIN
INSERT INTO dirty_data (date_record,lic_sch,data_kon,date_kon,base,fam,`name`,otch,cod_tn,cod_st,data_new,yearmon)
select 
now() As time1,
kartab_askue.lic_sch,
kartab_askue.data_kon,
kartab_askue.date_kon,
kartab_askue.base,
kartab_askue.fam,
kartab_askue.`name`,
kartab_askue.otch,
kartab_askue.cod_tn,
kartab_askue.cod_st,
t1.data_new,
t1.yearmon
from 
kartab_askue Left JOIN 
(select MAX(kartkvgd_askue.yearmon) As yearmon,
MAX(kartkvgd_askue.data_new) As data_new, 
kartkvgd_askue.lic_sch As lic_sch
from 
kartkvgd_askue
where kartkvgd_askue.del=0
GROUP BY kartkvgd_askue.lic_sch) As t1 
on kartab_askue.lic_sch=t1.lic_sch
where kartab_askue.del=0
END
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215618
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7так что вы посоветуете с датойКакой-то гибрид надо делать. Какой именно - много от чего зависит.
Например, как изначально предполагалось, в поле DATE хранить первое число месяца. Или в числом поле хранить число формата YYYYMM (например 201604). Или в строковом поле "2016-04". Т.е. вариантов множество.

Заполнять придется или триггером, или тем INSERT-ом, который будет писать данные в таблицу.

olegon7функция обрезания до месяца год(если конечно есть такая в mysql)EXTRACT(YEAR_MONTH FROM '2009-07-02 01:02:03')
DATE_FORMAT('2009-10-04 22:23:00', '%Y %m')
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39215621
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у нас в одной из таблиц вообще год и месяц выделены в отдельные числовые поля - тоже вариант.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216467
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
решил месяц_дату хранить в одном поле в строковом виде

вот ddl таблички
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE `dirty_data` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `date_record` date NOT NULL,
  `mon_year` varchar(7) NOT NULL,
  `lic_sch` varchar(16) DEFAULT NULL,
  `fam` varchar(64) DEFAULT NULL,
  `name` varchar(64) DEFAULT NULL,
  `otch` varchar(64) DEFAULT NULL,
  `kod_st` varchar(8) DEFAULT NULL,
  `kod_tn` varchar(8) DEFAULT NULL,
  `yearmon` date DEFAULT NULL,
  `data_new` int(11) DEFAULT NULL,
  `data_kon` int(11) DEFAULT NULL,
  `date_kon` date DEFAULT NULL,
  `base` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=196607 DEFAULT CHARSET=utf8;



подскажите автоискремент я правильно задал? 10 знаков? что будет при его переполнении?
mon_year задал 7 знаков максимально возможное 12-2016 так?
как расставить правильно уникальные ключи?
первичный ай-ди так?
предпологается что раз в месяц в таблицу будет падать по 60 тыс записей лиц счеты уникальны в пределе месяца , т е поля mon_year
по таблице вообще куча настроек , например тип таблицы какой правильнее InnoDB?
подскажите новичку уважаемые гуру?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216469
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код хранимки
Код: 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.
25.
26.
27.
28.
29.
30.
CREATE DEFINER=`Oleg`@`` PROCEDURE `zap`()
BEGIN
INSERT INTO dirty_data(mon_year,date_record,lic_sch,data_kon,date_kon,base,fam,`name`,otch,kod_tn,kod_st,data_new,yearmon)
	select 
DATE_FORMAT(CURRENT_DATE(),'%c-%Y') As mon_year,
now() As date_record,
kartab_askue.lic_sch,
kartab_askue.data_kon,
kartab_askue.date_kon,
kartab_askue.base,
kartab_askue.fam,
kartab_askue.`name`,
kartab_askue.otch,
kartab_askue.cod_tn,
kartab_askue.cod_st,
t1.data_new,
t1.yearmon
from 
kartab_askue Left JOIN 
(select MAX(kartkvgd_askue.yearmon) As yearmon,
MAX(kartkvgd_askue.data_new) As data_new, 
kartkvgd_askue.lic_sch As lic_sch
from 
kartkvgd_askue
where kartkvgd_askue.del=0
GROUP BY kartkvgd_askue.lic_sch) As t1 
on kartab_askue.lic_sch=t1.lic_sch
where kartab_askue.del=0;

END
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216479
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7подскажите автоискремент я правильно задал? 10 знаков? что будет при его переполнении?У целочисленных полей семейства INT число в скобках ничего не означает.
Т.е. unsigned int - это всегда число от 0 до 4294967295.

Посчитайте с какой интенсивностью будут добавляться записи и разделите 4294967295 на нее. Если вдруг полученный срок будет слишком мал для срока жизни системы, то используйте BIGINT. Его хватит точно.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216480
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7mon_year задал 7 знаков максимально возможное 12-2016 так?Я бы сделал впереди год, а потом месяц. Чтобы порядок строковой сортировки совпадал с натуральным.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216483
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7как расставить правильно уникальные ключи?(`mon_year`, `lic_sch`)
Либо в обратном порядке, зависит от запросов, которые будут использовать этот индекс.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216484
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7подскажите автоискремент я правильно задал? 10 знаков? что будет при его переполнении? 2633664
olegon7mon_year задал 7 знаков максимально возможное 12-2016 так?если фиксированная длина, можно просто char(7)
...и вообще, зачем 7, если можно 6? и почему месяц перед годом?
olegon7как расставить правильно уникальные ключи?Что должно быть уникально, на то и делать ключи. В вашем случае это (mon_year,lic_sch). Или в обратном порядке - зависит от того, какие запросы будут к базе.
"AUTO_INCREMENT=196607" - убрать.
olegon7
Код: sql
1.
2.
3.
from 
kartab_askue Left JOIN 
(select 

Шо, опять?! (с)
olegon7
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select 
MAX(kartkvgd_askue.yearmon) As yearmon,
MAX(kartkvgd_askue.data_new) As data_new, 
kartkvgd_askue.lic_sch As lic_sch
from 
kartkvgd_askue
where kartkvgd_askue.del=0
GROUP BY kartkvgd_askue.lic_sch

...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216485
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

спасибо за совет) я думаю надолго хватит))
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216492
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

запросы будут как правило получить все лицевые счета за такой то месяц

и внутри уже условия where
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216496
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7запросы будут как правило получить все лицевые счета за такой то месяцтогда первым ставить надо месяц
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216507
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

как убрать автоинскремент и для чего , я что-то не понял

ваш запрос который вы предложили выполнялся очень долго
какие ключи надо построить для ускорения его, по каким полям и в каких таблицах ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
kartab_askue.lic_sch,
kartab_askue.data_kon,
kartab_askue.date_kon,
kartab_askue.base,
(select yearmon from kartkvgd_askue where lic_sch=kartab_askue.lic_sch order by yearmon desc limit 1) as yearmon,
(select data_new from kartkvgd_askue where lic_sch=kartab_askue.lic_sch order by yearmon desc limit 1) as data_new
from 
kartab_askue 
where kartab_askue.del=0



учтите что в картвгд на один лицевой счетможет быть несколько ермонов, то же самое и с дата нью
т.е человек может оплатить несколько раз за месяц
я так понимаю сортировать надо по двум полям yearmon и data_new
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216530
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7,

один индекс в картквгд по (лицевой счёт, ермон)
или даже по (лицевой счёт, ермон, дата_нью) если это поле небольшого размера - я так и не понял, что там хранится
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216532
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7запросы будут как правило получить все лицевые счета за такой то месяцТ.е. например, за все октябри за несколько лет сразу?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216538
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

ставлю постгрес против фвмас, что за один месяц одного года
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216552
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirmiksoft,

ставлю постгрес против фвмас, что за один месяц одного годаТогда почему "первым ставить надо месяц" ?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216600
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

вообще за месяц года всех абонентов получать

или за последний месяц( ну я думаю в этом случае не прокатит так как строка)
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216607
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

дата_нью - это последние показания абонента за месяц , который платит.
т. как правило это величина тоже максимальная должна быть но не всегда, например при смене счетчика посл показания могут быть меньше чем предыдущие

но для последнего месяца ермона само то
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216675
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

спасибо вам

постороил составной индекс лицевой-ермон-датанью

и видоизменил ваш запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT
kartab_askue.lic_sch,
kartab_askue.fam,
kartab_askue.`name`,
kartab_askue.otch,
kartab_askue.data_kon,
(SELECT data_new from kartkvgd_askue where lic_sch=kartab_askue.lic_sch and del=0 order by yearmon desc,data_new asc limit 1) As data_new,
kartab_askue.date_kon,
(SELECT yearmon from kartkvgd_askue where lic_sch=kartab_askue.lic_sch and del=0 order by yearmon desc,data_new asc limit 1) As yearmon,
kartab_askue.cod_st,
kartab_askue.cod_tn,
kartab_askue.base
from 
kartab_askue 
where kartab_askue.del=0



отрабатывает за 13 сек что уже неплохо

вопрос такой в картабе есть еще поля код ст(код улицы - не смейтесь но это строка) и код тн(код города-тоже строка) они связываются с другими двумя таблицами где хранятся соответственно названия улиц и городов, мне их тоже вытащить таким же образом через подзапросы или потом уже соединять?
картаб и таблица города и улицы связываются по 2-ум полям код ст/код ст И по полю base
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39216997
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7miksoft,
решил месяц_дату хранить в одном поле в строковом виде

ну и зря
цифры то покомпактней и побыстрее будут
чем SMALLINT не угодил?
пихайте в него 1216 (декабрь 2016)
и всего за 2 байта
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39217022
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78olegon7miksoft,
решил месяц_дату хранить в одном поле в строковом виде

ну и зря
цифры то покомпактней и побыстрее будут
чем SMALLINT не угодил?
пихайте в него 1216 (декабрь 2016)
и всего за 2 байтаНу так можно и вовсе до байта сократить. Например, хранить в нем номер месяца с 1 апреля 2016 года. На 21 год хватит
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39217204
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofttip78пропущено...


ну и зря
цифры то покомпактней и побыстрее будут
чем SMALLINT не угодил?
пихайте в него 1216 (декабрь 2016)
и всего за 2 байтаНу так можно и вовсе до байта сократить. Например, хранить в нем номер месяца с 1 апреля 2016 года. На 21 год хватит
да чем бы дитё не тешилось
если подходит для задачи, то и на здоровье
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39217714
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofttanglirmiksoft,

ставлю постгрес против фвмас, что за один месяц одного годаТогда почему "первым ставить надо месяц" ?Имелось в виду, что первым должно быть поле "год-месяц", а не счёт.
olegon7и видоизменил ваш запросВо втором подзапросе сортировку по дата_нью можно убрать, она ни на что не влияет.
olegon7мне их тоже вытащить таким же образом через подзапросы или потом уже соединять?Ну, пальцем в небо - это статичные справочники без всякой периодики, попробуйте просто заджойнить их в основной запрос (надеюсь, индексы на поля кодов в тех таблицах есть?)
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39217805
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,
сделал по вашей рекомендации год-месяц тип строка что то вроде 2016-4 получилось

не понял про сортировку по полю дата_нью , зачем ее убирать?

ведь за одну дату может быть несколько платежей, а надо выбрать самую большую по значению дата нью.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220398
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал простую хранимку

на удаление записей по параметру

не могу понять почему она не выполняется
вот ddl
Код: sql
1.
2.
3.
4.
5.
CREATE DEFINER=`Oleg`@`` PROCEDURE `del`(IN `year_mon` char)
BEGIN
DELETE  FROM dirty_data WHERE dirty_data.year_mon_record=year_mon;

END



если отдельно запрос то выполняется , я так понимаю что то с параметром не так
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220432
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7
Код: sql
1.
DEFINER=`Oleg`@``

дефайнер разве так можно писать?


случаем, в таблице нет поля year_mon ?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220456
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

есть yearmon слитно

если запрос просто написать записи удаляются
а хранимко нет
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220461
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался не так параметр писал
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220464
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7,

поле year_mon_record какого типа?
olegon7
Код: sql
1.
(IN `year_mon` char)

Почему char без длины?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220805
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

нет все там хорошо - поле тип varchar, значение не правильно передавал, разобрался

вопрос у меня сейчас уникальный ключ составной - year_mon_record, lic_sch
т е пара 2016-4 и 4239482334 всегда уникальна

могу ли я еще построить ключ чтобы в пределе месяца были уникальные значения?

т е поп полю lic_sch
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220874
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7вопрос у меня сейчас уникальный ключ составной - year_mon_record, lic_sch
т е пара 2016-4 и 4239482334 всегда уникальна

могу ли я еще построить ключ чтобы в пределе месяца были уникальные значения ?

т е поп полю lic_schА первое и второе - это разве не одно и то же?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220919
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

это будет контролироваться на уровне записи?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39220938
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7miksoft,

это будет контролироваться на уровне записи?Вопрос не понял.
Уникальные ключи работают по всей таблице.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39226655
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос такой
получаю массив на клиенте с данными (lic_sch,year_mon_record,previous_reliable, following_reliable, existence_lic_sch,previous_readings,following_readings)

как мне правильно проапдейтить таблицу dirty_data по совпадению полей lic_sch,year_mon_record ?

естественно через хранимку(передать параметры я могу в нее).
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39226723
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
записей 50 тыс
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227174
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7,

сбросить массив в csv, загрузить его во временную таблицу, сделать много(=двух)табличный апдейт.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227209
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

немного сделал по другому

Код: sql
1.
2.
3.
4.
5.
6.
7.
Для Индекс = 0 По Мас.Количество() - 1 Цикл
	
objComm.CommandText = "UPDATE dirty_data SET dirty_data.pred_dostov="+Строка(Мас[Индекс].ДостоверныПред)+",dirty_data.sled_dostov="+Строка(Мас[Индекс].ДостоверныСлед)+",dirty_data.nalich_lic_sch="+Мас[Индекс].ЛицевойСчетСуществует+",dirty_data.pred_pokaz="+Окр(Мас[Индекс].ПоказанияПред)+",dirty_data.sled_pokaz="+Окр(Мас[Индекс].ПоказанияСлед)+",dirty_data.date_update=now() 
|WHERE dirty_data.lic_sch="+Строка(Мас[Индекс].ЛицевойСчет)+" and dirty_data.year_mon_record="+Строка(Мас[Индекс].Дата)+";";
objComm.Execute();

 КонецЦикла;



где массив - это данные для апдейта

вопрос такой в массиве
поля достоверныпред и достоверны Пред булевы Может принимать значения- истина и ложь
не апдейтятся поля
ошибка Unknown column 'Да' in 'field list'
я так понял из-за булево
что подскажите?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227212
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
UPDATE dirty_data SET dirty_data.pred_dostov=Да,dirty_data.sled_dostov=Да,dirty_data.nalich_lic_sch=Да,dirty_data.pred_pokaz=11 549,dirty_data.sled_pokaz=11 767,dirty_data.date_update=now() 
WHERE dirty_data.lic_sch=11007701921 and dirty_data.year_mon_record=2016-4;


вот такой запрос ушел на сервер mysql
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227239
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7что подскажите?дописать в формирующем запрос коде изменение этих полей с да/нет на 1/0
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227312
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Код: sql
1.
2.
objComm.CommandText = "UPDATE dirty_data SET dirty_data.pred_dostov="+Число(Мас[Индекс].ДостоверныПред)+",dirty_data.sled_dostov="+Число(Мас[Индекс].ДостоверныСлед)+",dirty_data.nalich_lic_sch="+Число(Мас[Индекс].ЛицевойСчетСуществует)+",dirty_data.pred_pokaz="+Число(Окр(Мас[Индекс].ПоказанияПред))+",dirty_data.sled_pokaz="+Число(Окр(Мас[Индекс].ПоказанияСлед))+",dirty_data.date_update=now() 
|WHERE dirty_data.lic_sch="+Мас[Индекс].ЛицевойСчет+" and dirty_data.year_mon_record="+Мас[Индекс].Дата+";";



написал функция число преобразовывает в число

сейчас ругается на Unknown column '11 549' in 'field list'

там тоже число
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227327
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Код: plsql
1.
2.
UPDATE dirty_data SET dirty_data.pred_dostov=1,dirty_data.sled_dostov=1,dirty_data.nalich_lic_sch=1,dirty_data.pred_pokaz=11 549,dirty_data.sled_pokaz=11 767,dirty_data.date_update=now() 
WHERE dirty_data.lic_sch=11007701921 and dirty_data.year_mon_record=2016-4;
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227332
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7,

1)сервер не понимает числа, написанные с разделителями(пробелами)
2)year_mon_record=строка? тогда обрамляйте её кавычками
3)точно 2016-4, а не 2016-04?
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227337
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,
ермон и лиц счет строки
а mysql нет булево типа? я так понимаю вместо него используется TINYINT(1)
когда у меня формируется массив , там уже все типы прописаны в колонках

ермон лиц счет строка, показ пред , показ след число, остальные булево.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227347
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

как оптимальнее делать формировать запрос в цикле и передавать на сервер на выполнение,
или создать хранимку на сервере и передавать туда все эти параметры?и тоже в цикде запустить на выполнение

при передаче парметров сразу наверное автоматически будет форматированная строка числа , т е без разделителя, может булево правильно передаваться будет.

может как то быстрее можно организовать апдейт

жду вашего совета
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227389
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegon7при передаче парметров сразу наверное автоматически будет форматированная строка числа , т е без разделителя, может булево правильно передаваться будет.Разбирайтесь, как ваш клиент работает. Что он серверу передаст, то сервер и возьмёт.

olegon7может как то быстрее можно организовать апдейт 19120150
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227583
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

апдейт в цикле действительно очень долго .

вы предлагаете выгрузить в csv и загрузить во временную таблицу и сделать апдейт так?

могу ли я хранимкой сразу загрузить данные в temp_db и проапдейтить с dirty_data минуя выгрузку в csv ФОРМАТ?

не понимаю для чего он нужен.
...
Рейтинг: 0 / 0
как в mysql получить первое число месяца текущего времени
    #39227623
olegon7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне все равно придется инсертить записи во временную таблицу.
а потоп апдейтить dirty_data по временной таблице
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как в mysql получить первое число месяца текущего времени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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