Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
tenho uma coluna no meu banco que contem o seguinte dado:
2012_08_29 11:51:54,2,15,meia#2012_08_25 18:20:12,2,15,meia
Neste caso são informações de usuários diferentes, pois separo os dados com explode("#",$string);
Quero fazer um SELECT buscando todos os registros onde a data seja menor do que a que eu definir. Por ex.:
No registro (negrito) acima, tenho a data '2012_08_25'. Se eu definir a a data limite como 2012_08_27, o SELECT teria que me retornar esse registro, pois consta uma data menor do que a que eu defini.
Tem como fazer isso? É com REGEXP? Não tem problema ele me trazer as outras datas que sejam superior a essa que eu defeni, pois depois tiro elas com uma verificação.
Obrigado pessoal!
Se os dados forem salvos com DATE/DATETIME/TIMESTAMP ou algum formato de data padrão do SGDB, a consulta se faz de forma simples através de um operador relacional (>, <, >=, <=) ou através de um range (BETWEEN).
Digamos que eu queira todas as datas menores que a de hoje:
"SELECT
*
FROM
tabela
WHERE
data < '2012-09-03';
"
O SGBD se responsabiliza pelas conversões necessárias.
>
Se os dados forem salvos com DATE/DATETIME/TIMESTAMP ou algum formato de data padrão do SGDB, a consulta se faz de forma simples através de um operador relacional (>, <, >=, <=) ou através de um range (BETWEEN).
Digamos que eu queira todas as datas menores que a de hoje:
"SELECT
*
FROM
tabela
WHERE
data < '2012-09-03';
"
O SGBD se responsabiliza pelas conversões necessárias.
Não vai dar certo Gabriel. O campo é tipo texto, pois não é reservado apenas para dados no formato de data. Como falei, nesta coluna vai informações como:
2012_08_25 18:20:12,2,15,meia
No caso pensei que eu teria que usar uma expressao regular para pegar apenas a data no início dessa string e fazer a verificação se é ou não menor que a data que eu defini.
Caso não tenha como fazer isso pelo select vou ter que usar um if e colocar essas datas que são inferiores em um array. É a unica solução que estou vendo até o momento ....
Qual a real necessidade de salvar várias datas de diversos usuários em um único campo?
As vezes, remodelar as DDL é uma boa saída quando se encontra problemas como esse. Ainda mais quando o sistema está no início. Mas cada caso é um caso.
Seu SGBD é MySQL?
Para maiores informações sobre REGEX em MySQL, essa pode ser sua saída:
http://forum.imasters.com.br/topic/103874-expressoes-regulares-no-mysql/
Alguém aí pode me indicar o caminho? Não precisam colocar tudo mastigado, apenas um link ou um caminho que seja pra que eu possa resolver isso!
Obg pessoal!!!