Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выбор из MSSQL по дате  [new]
Mastekor
Member

Откуда:
Сообщений: 39
Как выбрать из базы все поля у которых дата сегодняшняя...
Формат поля datetime (0000-00-00 00:00:00.000)
13 окт 05, 13:11    [1965541]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
1
datediff(day,...)
2
cast(floor(cast(date as float)) as datetime)=cast(floor(cast(@d as float)) as datetime)
3
(имхо самый быстрый)
@d datetime
select ....
where date between cast(floor(cast(@d as float)) as datetime) and cast(floor(cast(@d as float))+1 as datetime)
13 окт 05, 13:13    [1965555]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
Mastekor
Member

Откуда:
Сообщений: 39
Ээ... Честно говоря не понял ничего... Хотя запросы к MySql вроде сложности не вызывают...
Можно пример конкретный...
Есть поле date_test в таблице test.
Пусть сегодня 13.10.2005
запрос будет
@d datetime
SELECTR * FROM test WHERE
date between cast(floor(cast(@d as float)) as datetime) and cast(floor(cast(@d as float))+1 as datetime)

Таким запросом я получу все строки за сегодня без учета времени? То есть с 12 ночи до 12 ночи?
13 окт 05, 14:06    [1965918]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Mastekor wrote:
> Как выбрать из базы все поля у которых дата сегодняшняя...
> Формат поля datetime (0000-00-00 00:00:00.000)
select * from sometable where field >= @date and Field < @date+1
--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

13 окт 05, 14:22    [1965984]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
если у вас, к примеру
@d='01-01-2005 10:10:10'
то запросом
date between cast(floor(cast(@d as float)) as datetime) and cast(floor(cast(@d as float))+1 as datetime)
вы получите всё за 01-01-2005
а
field >= @date and Field < @date+1
всё за сутки
с '01-01-2005 10:10:10' по '02-01-2005 10:10:10'
13 окт 05, 16:16    [1966752]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
select * from tablee
where datetime_field >= CONVERT(varchar(8), GETDATE(), 112)
13 окт 05, 16:23    [1966783]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Smirnov Anton wrote:
> если у вас, к примеру
> @d='01-01-2005 10:10:10'
> то запросом
> date between cast(floor(cast(@d as float)) as datetime) and
> cast(floor(cast(@d as float))+1 as datetime)
> вы получите всё за 01-01-2005
> а
> field >= @date and Field < @date+1
> всё за сутки
> с '01-01-2005 10:10:10' по '02-01-2005 10:10:10'
убрать время из даты - это в факе, ежели не ошибаюсь.
или вот sanyl уже один из способов подсказал

--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

13 окт 05, 16:39    [1966860]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
SanyL
select * from tablee
where datetime_field >= CONVERT(varchar(8), GETDATE(), 112)


Вы завтрашние газеты читали?! ((с) х\ф Небеса обетованные). ;) Т.е. при условии остутсвия записей с датой более, чем сегодня.
13 окт 05, 16:45    [1966885]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
pkarklin
SanyL
select * from tablee
where datetime_field >= CONVERT(varchar(8), GETDATE(), 112)


Вы завтрашние газеты читали?! ((с) х\ф Небеса обетованные). ;) Т.е. при условии остутсвия записей с датой более, чем сегодня.


при все уважении к вам, но показан формат.... формат имеет время! запись
CONVERT(varchar(8), GETDATE(), 112) возращает сегодняшнюю дату (можно сказать с нулевым временем).... значит все записи с сегодняшней датой сюда войдут (я предполагаю что завтрашней даты нет в таблице, если есть то не так много нано добавить)
13 окт 05, 16:57    [1966954]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
SanyL
значит все записи с сегодняшней датой сюда войдут


я и не спорю.

автор
я предполагаю что завтрашней даты нет в таблице


А я предположил, а вдруг есть. ;)
13 окт 05, 17:00    [1966967]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
) (сорри за оффтоп)
13 окт 05, 17:05    [1966995]     Ответить | Цитировать Сообщить модератору
 Re: Выбор из MSSQL по дате  [new]
Mastekor
Member

Откуда:
Сообщений: 39
Огромное спасибо, за помощь. Нелегкое дело уползать от PHP+MySQL к MSSQL+ASP.NET... Непривычно все еще...
Дата может быть завтрашним числом, ибо не новости выбираю, редко, но все же лучше учесть эту возможность. Это, как например, освобождение номеров в гостинице.

автор
при все уважении к вам, но показан формат.... формат имеет время! запись
CONVERT(varchar(8), GETDATE(), 112) возращает сегодняшнюю дату (можно сказать с нулевым временем).... значит все записи с сегодняшней датой сюда войдут (я предполагаю что завтрашней даты нет в таблице, если есть то не так много нано добавить)

Именно это и надо было, я не знал, как обнулить время, без использования C# догадывался, что мона сделать это средставми MSSQL но не знал как.

Огромное всем ещё раз спасибо.
15 окт 05, 13:29    [1972453]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить