Tak, w zależności od tego, co rozumiesz przez oczekiwane zachowanie. Operator BETWEEN będzie traktował te operandy jako varchary i odpowiednio zastosuje swoje reguły porównania:
Teraz widzę wiele potencjalnych problemów, porównując ciągi i spodziewając się zachowania porównania dat. Nie widziałem żadnych w moich testach, ale przyjrzyj się uważnie swoim danym. Czy funkcja CONVERT zwraca czas 24-godzinny z odpowiednimi zerami wiodącymi?
To pytanie ma inne podejścia do porównywania czasów bez dat, inne niż konwertowanie ich na varchary.
Zwróć także uwagę na daty null, co spowoduje, że odpowiedni warunek WHERE zwróci wartość false (w rzeczywistości nieznaną).
W drugim pytaniu wskazałeś, że otrzymujesz błąd. Jeśli tak, czy możesz to opublikować?