Estou um pouco atrasado para este tópico, mas na verdade há suporte direto para o operador semelhante no servidor MS SQL.
Conforme documentado na ajuda do LIKE, se o tipo de dados não for uma string, será tentado convertê-lo em uma string. E conforme documentado na documentação cast \ convert:
a conversão de data e hora padrão para string é do tipo 0 (, 100), que é mon dd aaaa hh: miAM (ou PM).
Se você tiver uma data como esta no DB:
2015-06-01 11:52:59.057
e você faz consultas como esta:
select * from wws_invoice where invdate like 'Jun%'
select * from wws_invoice where invdate like 'Jun 1%'
select * from wws_invoice where invdate like 'Jun 1 %'
select * from wws_invoice where invdate like 'Jun 1 2015:%'
select * from wws_invoice where invdate like 'Jun ? 2015%'
...
select * from wws_invoice where invdate like 'Jun 1 2015 11:52AM'
você obtém essa linha.
No entanto, este formato de data sugere que é um DateTime2 , então a documentação diz:
21 ou 121 - ODBC canônico (com milissegundos) padrão para hora, data, datetime2 e datetimeoffset. - aaaa-mm-dd hh: mi: ss.mmm (24h)
Isso torna tudo mais fácil e você pode usar:
select * from wws_invoice where invdate like '2015-06-01%'
e obter o registro da fatura. Aqui está um código de demonstração:
DECLARE @myDates TABLE (myDate DATETIME2);
INSERT INTO @myDates (myDate)
VALUES
('2015-06-01 11:52:59.057'),
('2015-06-01 11:52:59.054'),
('2015-06-01 13:52:59.057'),
('2015-06-01 14:52:59.057');
SELECT * FROM @myDates WHERE myDate LIKE '2015-06-01%';
SELECT * FROM @myDates WHERE myDate LIKE '2015-06-01 11%';
SELECT * FROM @myDates WHERE myDate LIKE '2015-06-01 11:52:59%';
SELECT * FROM @myDates WHERE myDate LIKE '2015-06-01 11:52:59.054%';
Fazer pesquisas de data e hora no servidor SQL sem qualquer conversão em string sempre foi problemático. Obter cada parte da data é um exagero (o que provavelmente não usaria um índice). Provavelmente, a melhor maneira quando você não usa a conversão de string seria usar verificações de intervalo. ie:
select * from record
where register_date >= '20091010' and register_date < '20091011';