Справка по SQL-запросам - PullRequest
0 голосов
/ 01 июня 2009

Hai,

Структура таблицы

Id No   Date        Time

0001,   01-05-2009, 040000
0001,   02-05-2009, 020000
0002,   01-05-2009, 060000
0002,   01-05-2009, 180000

Время и дата nvarchar

Я хочу получить данные между

  • Вчера с 030001 по сегодня 030000
  • Позавчера с 0300001 до вчерашнего дня 030000

Я попробовал приведенный ниже запрос

Select 
    idno, min (time), max (time) 
from 
    table 
where 
    time between 030001 and 030000

Ничего не отображается в результате, потому что это занимает сегодня время с 03.00 до 03.01. Именно мне нужно сегодня с 03:00 до вчерашнего 03.01

Мне нужен SQL-запрос для вышеуказанного условия

Может ли кто-нибудь мне помочь?

Jash.

1 Ответ

1 голос
/ 01 июня 2009

Трудно отсортировать или отфильтровать, когда ваша дата имеет формат, подобный DD-MM-YYYY. В таком формате 01-01-2009 предшествует 02-01-2000!

Итак, сначала преобразуйте свою дату, указав сначала длинные годы, а короткие короткие:

YYYY-MM-DD HH:MM:SS

Такой запрос может сделать это:

select [id no],
    substring(date,1,2) + '-' + substring(date,4,2) + '-' + 
    substring(date,7,4) + ' ' +
    substring(time,1,2) + ':' + substring(time,3,2) + ':'
    substring(time,5,2) as NormalDate
from YourTable

Теперь вы можете легко выбрать все строки для определенного промежутка времени:

select *
from (
    select [id no],
        substring(date,1,5) + '-' + substring(date,7,4) + ' ' +
        substring(time,1,2) + ':' + substring(time,3,2) + ':'
        substring(time,5,2) as NormalDate
    from YourTable
) sub
where '2009-05-01 03:00:00' < NormalDate
and NormalDate < '2009-05-02 03:00:00'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...