ВЫБРАТЬ запрос с LIKE не удается - PullRequest
0 голосов
/ 24 июня 2019

Я использую запрос SQL SELECT, чтобы вернуть все строки с определенной даты.

Используемый мной столбец называется TimeStamp (datetime)

(пример данных из этого столбца = 01/02/2018 07:55:55)

Я хотел бы вернуть все строки с определенной даты, например 24/06/2019

Я пытался

SELECT top 20 TimeStamp
from Report
where TimeStamp = '02/01/2018 07:55:55'

, который возвращает одну строку (что является правильным, поскольку есть только одна строка, содержащая эти данные)

Если я тогда попробую

SELECT top 20 TimeStamp
from Report
where TimeStamp LIKE '02/01/2018%'

Я не получил результатов, я также пытался избежать косой черты

SELECT top 20 TimeStamp
from Report
where TimeStamp = '02\/01\/2018%'

Ответы [ 4 ]

4 голосов
/ 24 июня 2019

Большинство баз данных поддерживают строковую функцию с именем left(). Если я предполагаю, что ваша «временная метка» является строкой, то:

where left(timestamp, 10) = '01/02/2018'

Тем не менее, он должен быть сохранен как дата или дата / время. Если это так, то вы можете сделать:

where timestamp >= '2018-02-01' and
      timestamp < '2018-02-02'

Обратите внимание на использование стандартных форматированных дат (ГГГГ-ММ-ДД). Именно так большинство баз данных реализуют литералы даты.

В SQL Server вы также можете использовать:

where convert(date, timestamp) = '2018-02-01' 

И эта, и предыдущая версия будут использовать индекс для timestamp, поэтому оба являются разумными решениями.

1 голос
/ 24 июня 2019

это должно работать

SELECT TimeStamp FROM report where convert(Date, TimeStamp) = '2019-06-24'
0 голосов
/ 24 июня 2019

Преобразовать значение метки времени в дату.

SELECT TimeStamp 
FROM report 
WHERE CAST(TimeStamp AS DATE) = '2019-06-24'
0 голосов
/ 24 июня 2019

или select timestamp from report where timestamp between '2019-06-24' and '2019-06-25'.Это позволит вам получить все между 2019-06-24 00:00:00 и 2019-06-25 00:00:00, таким образом, все записи с датой 2019-06-24

...