2015-12-22 2 views
2

Каждая дата как одна таблица в моей базе данных. Во всех таблицах данные одинаковы, но таблица отличается. Я хочу, чтобы искать один столбец (этот столбец является общим для всех таблиц) .Я прошел период, как 2015-01-01, как from date и 2015-05-31 в to DateКак получить данные между двумя датами (From Date, To Date) в MYSQL?

Я написал запрос, как это, но это не работает для меня.

select MsgId, UserId, Priority, MsgStatus, 

FROM abc.`2015-05-04` as p1,abc.`2015-05-14` as p2 
WHERE Id="cfcbc375-372e-4586-bc23-9e94e6eb2c16" 
+2

имена таблиц - это даты? – Phiter

+1

Является ли это имя таблицы abc.'2015-05-04', abc.'2015-05-14'? –

+3

Боже, это худшая идея, которую я видел. Вы должны просто создать столбец в своей основной таблице с датами, вместо того, чтобы составлять таблицу для каждого дня, так как столбцы одинаковы в каждой таблице. Это упростит сбор информации между датами. – Phiter

ответ

0

Вы можете достичь с помощью функциональности дописывания Как это, здесь мы принимаем с даты, до настоящего времени, и после этого преобразования типа даты в строку формат. теперь вызывая запрос sql до последней даты, затем используйте функции добавления, такие как finalQuery = finalQuery + " " + " union all " + " " + query1; Hope. Вы получите данные от даты начала до конца. :)

finalQuery = "SELECT TransDate FROM `" + str_date + "` WHERE `Id`='" + Id 

for(int i=1;i<dates.size();i++){ 
    Date lDate =(Date)dates.get(i); 
    ds = formatter.format(lDate);  


    for(int i=0;i<s;i++) { 
     query1 = "SELECT TransDate FROM `" + ds + "` WHERE `Id`='" + Id + "'";   
    } 
    finalQuery = finalQuery + " " + " union all " + " " + query1; 
} 
+0

yup теперь я получаю. благодаря –

0

Вы можете использовать UNION ALL

select MsgId, UserId, Priority, MsgStatus, 
     DestinationNumber, OrginatorName, MsgSubmitID, 
     MsgStatusMsg, TransDate, ClientMsgId 
FROM abc.`2015-05-04` as p1 
WHERE Id="cfcbc375-372e-4586-bc23-9e94e6eb2c16" 

UNION ALL 

select MsgId, UserId, Priority, MsgStatus, 
     DestinationNumber, OrginatorName, MsgSubmitID, 
     MsgStatusMsg, TransDate, ClientMsgId 
FROM abc.`2015-05-14` as p2 
WHERE Id="cfcbc375-372e-4586-bc23-9e94e6eb2c16" 

вы должны использовать объединение все для всех таблицы между 2015-05-04 и аЬсом. 2015-05-14 как 2015-05-04, 2015-05-05, 2015-05-06 и так далее

1

для поиска даты использования to_date

and >= to_date('22-12-2015','dd-mon-yyyy') 
and <= to_date('21-01-2016','dd-mon-yyyy') 

это будет выглядеть для всех случаев, когда дата была между 22 декабря и 21 января включительно.

Предполагается, что OP неправильно понимает часть FROM инструкции SQL, даты должны быть в предложениях WHERE/AND.

0

Я вижу. У вас есть одна таблица для каждой даты, каждая таблица содержит одни и те же столбцы.

Это не то, как вы разрабатываете таблицы, это плохое программирование.

Вы должны создать новый столбец в одной таблице и добавить даты в этот столбец.

Затем вы можете использовать его как:

select MsgId, UserId, Priority, MsgStatus, 
     DestinationNumber, OrginatorName, MsgSubmitID, 
     MsgStatusMsg, TransDate, ClientMsgId 
FROM abc.`table` 
WHERE Id="cfcbc375-372e-4586-bc23-9e94e6eb2c16" AND 
Date BETWEEN 'date1' and 'date2' 

См Between operator

+0

имя таблицы как дата yar (ежедневные даты, например 2015-12-22,2015-12-23,2015-22-24) –

+0

Это никогда не сработает. – Phiter

Смежные вопросы