Duvida sobre Select

Gostaria de fazer um select filtrando pelo ms de um campo date no Sqlite.

A ideia e a seguinte: tenho uma janela que peo para informar o ms de aniversario em um textfield, com o ms informado no caixa de texto fao um filtro na tabela de cliente onde tenho um campo data_nascimento no formato date. Como seria este Select ?

Em Visual Fox linguagem que estou acostumado a trabalhar ficaria assim.

Select *  from clientes where month(clientes.data_nascimento) = int(Textfield.text)    // O retorno da Funo Month  numrico,  transformo o contedo do textfield em numero com a funo int.

Andei olhando a documentao do SQlite no vi nenhum exemplo que esclarecesse minha duvida.

[quote=208090:@Cauby Osorio]Gostaria de fazer um select filtrando pelo mês de um campo date no Sqlite.

A ideia e a seguinte: tenho uma janela que peço para informar o mês de aniversario em um textfield, com o mês informado no caixa de texto faço um filtro na tabela de cliente onde tenho um campo data_nascimento no formato date. Como seria este Select ?

Em Visual Fox linguagem que estou acostumado a trabalhar ficaria assim.

Select *  from clientes where month(clientes.data_nascimento) = int(Textfield.text)    // O retorno da Função Month é numérico,  transformo o conteúdo do textfield em numero com a função int.

Andei olhando a documentação do SQlite não vi nenhum exemplo que esclarecesse minha duvida.[/quote]

Bom dia,

A forma correta é esta:

SELECT * FROM table name WHERE strftime(’%m’, date column) = ‘04’

Onde date column obviamente é o seu campo data. O único porém, e disso não tenho certeza, só fazendo testes mesmo, é que é necessário ter o zero a esquerda para isso funcionar. Se colocasse ‘4’ ao invés de ‘04’, possivelmente não daria certo.

Mas como disse, você precisa testar.

Abraço

Mais uma vez obrigado Adelar.
S tive que mudar um pouco o Select ficou assim:
Dim mesaniversario As String
mesaniversario = TxtMesAniv.Text
sql = “SELECT Cliente.Id, Cliente.nome, Cliente.Telefone, strftime(’%d -%m -%Y’,Cliente.nascimento) as Nascimento "
sql = sql + “FROM cliente WHERE strftime(’%m’,Cliente.nascimento) = '”+mesaniversario+”’ ORDER BY id ;"

Ainda brigo um pouco com o Select, no visual Fox eu faria o Select diretamente no precisava passar uma string. Ainda me perco um pouco com essa coisa de concatenar varivel na String passada.

Mais seu exemplo foi show.
Obrigado.

S para servir de opo, voc tambm pode passar o sql direto, no comando mydb.SqlSelect(“clausula sql”)… Mas ainda ter que concatenar as variveis…

Outra maneira que melhora um pouco a legibilidade, voc no usar o sql = sql + “continuao do sql”.

Voc pode usar assim:

sql = "SELECT Cliente.Id , Cliente.nome, strftime('%d -%m -%Y',Cliente.nascimento) as Nascimento " _
         + "FROM cliente WHERE strftime('%m',Cliente.nascimento) = '"+mesaniversario+"' ORDER BY id ;"

Ou seja, colocando um underline (trao baixo) no final da linha, e comeando a prxima com um sinal de “+”, voc no precisa ficar repetindo o nome da varivel e concatenando pedaos da sua clausula sql…