COMPARAR HORA

CAIO.FR.SP 11/02/2014 23:46:31
#434601
galera to tentando realizar uma consulta que ta me deixando doido.

no banco tenho uma tabela com os seguintes campos:

codigo int pk
dia int ex. 19
inicio time ex. 13:00
fim time ex. 15:00

ai preciso pesquisar nessa tabela da seguinte forma:

SELECT codigo FROM tabela WHERE dia = [Ô] + datetime.now.dayofweek.tostring() + [Ô] AND inicio >= [Ô] + datetime.now.timetoday.tostring()  + [Ô] AND fim <= [Ô] + datetime.now.timetoday.tostring()


alguem pode me ajudar?
GUIMORAES 12/02/2014 08:54:26
#434610
Qual é o problema?

Se você utilizar parâmetros na consulta você resolve este problema(que provavelmente seja formatação de valores).
FILMAN 12/02/2014 10:55:43
#434625
Qual o Banco de Dados?
CAIO.FR.SP 12/02/2014 12:40:14
#434636
GUIMORAES123, a consulta nunca retorna dados,

FILMAN, SQL SERVER 2008,
GUIMORAES 12/02/2014 13:55:37
#434639
você já tentou consultar direto pelo Sql Server?

ex: SELECT codigo FROM tabela WHERE dia = 19 AND inicio >= 13:00 AND fim <= 15:00

O select seria este, da forma que explicou.

Tenta rodar ele no Sql Server, se retornar algo é só fazer o mesmo dentro do sistema, caso contrário, terá que rever seu código.

Ao meu ver, consulta com hora teria que ter formato, ex: inicio: 13:00:00, você deve ver o tipo de formatação do sql server, ex: select convert(varchar, [Ô]13:00:00[Ô], 8);

Testa ai.
ROBIU 12/02/2014 14:01:49
#434643
Resposta escolhida
A função que você está informando vai retornar o dia da semana (seg, ter...)

Se estiver usando o visual studio, tenta assim:
SELECT codigo FROM tabela WHERE dia = [Ô] + Format(Now, [Ô]dd[Ô])+ [Ô] AND inicio >= [Ô] + Format(Now, [Ô]hh:mm[Ô])+ [Ô] AND fim <= [Ô] + Format(Now, [Ô]hh:mm[Ô])


Se estiver no SQL Server tenta a função DatePart :
Click aqui para vê instrução da função

FILMAN 12/02/2014 17:42:14
#434665
Faça assim

Dim vSQL As String = [Ô][Ô]

vSQL = [Ô]SELECT codigo [Ô]
vSQL = vSQL & [Ô] FROM tabela [Ô]
vSQL = vSQL & [Ô] WHERE dia = [Ô] & Format(DateTime.Now, [Ô]dd[Ô])
vSQL = vSQL & [Ô] AND inicio >= CAST([ô][Ô] & Format(DateTime.Now, [Ô]HH:mm[Ô]) & [Ô][ô] AS TIME) [Ô]
vSQL = vSQL & [Ô] AND fim <= CAST([ô][Ô] & Format(DateTime.Now, [Ô]HH:mm[Ô]) & [Ô][ô])[Ô]


Espero ter ajudado
Tópico encerrado , respostas não são mais permitidas