Вывод записей прошедшего дня

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Вывод записей прошедшего дня

Непрочитанное сообщение Gloft » 2009-11-30 9:49:04

Как вывести все записи за прошлый день?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Вывод записей прошедшего дня

Непрочитанное сообщение Fastman » 2009-11-30 14:34:23

Gloft писал(а):Как вывести все записи за прошлый день?
timestamp присутствует в таблице ? :)
Главное в жизни здоровье и любовь, остальное я все куплю.

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: Вывод записей прошедшего дня

Непрочитанное сообщение Gloft » 2009-11-30 16:34:35

да каждой записи соответствует поле с timestamp

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Вывод записей прошедшего дня

Непрочитанное сообщение Fastman » 2009-11-30 17:02:10

Gloft писал(а):да каждой записи соответствует поле с timestamp
Так а в чем проблема... доки читать иногда надо.
К примеру:

Код: Выделить всё

SELECT SOME_COLUMN FROM SOME_TABLE WHERE TIMESTAMP_COLUMN = GETDATE() - 1
Главное в жизни здоровье и любовь, остальное я все куплю.

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: Вывод записей прошедшего дня

Непрочитанное сообщение Gloft » 2009-11-30 17:36:16

Почему сразу не догадался. А я все с DATEPART морочился.

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: Вывод записей прошедшего дня

Непрочитанное сообщение Gloft » 2009-12-01 9:33:02

Код: Выделить всё

SELECT SOME_COLUMN FROM SOME_TABLE WHERE TIMESTAMP_COLUMN = GETDATE() - 1
выше приведенный код не со всем то что нужно как оказалось
он выводит только те сообщения которые были сделаны вчера в тоже время (час:минуты:секунды) что и текущий запрос

вот то как это в итоге работает у меня:

Код: Выделить всё

SELECT 
	SOME_COLUMN
FROM
	SOME_TABLE
WHERE
	DATEPART(dd, TIMESTAMP_COLUMN) = (SELECT DATEPART(dd, (GETDATE()-1)))
	AND
	DATEPART(mm, TIMESTAMP_COLUMN) = (SELECT DATEPART(mm, (GETDATE()-1)))
	AND
	DATEPART(yyyy, TIMESTAMP_COLUMN) = (SELECT DATEPART(yyyy, (GETDATE()-1)))

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Вывод записей прошедшего дня

Непрочитанное сообщение Fastman » 2009-12-01 12:52:03

Gloft писал(а):

Код: Выделить всё

SELECT SOME_COLUMN FROM SOME_TABLE WHERE TIMESTAMP_COLUMN = GETDATE() - 1
выше приведенный код не со всем то что нужно как оказалось
он выводит только те сообщения которые были сделаны вчера в тоже время (час:минуты:секунды) что и текущий запрос

вот то как это в итоге работает у меня:

Код: Выделить всё

SELECT 
	SOME_COLUMN
FROM
	SOME_TABLE
WHERE
	DATEPART(dd, TIMESTAMP_COLUMN) = (SELECT DATEPART(dd, (GETDATE()-1)))
	AND
	DATEPART(mm, TIMESTAMP_COLUMN) = (SELECT DATEPART(mm, (GETDATE()-1)))
	AND
	DATEPART(yyyy, TIMESTAMP_COLUMN) = (SELECT DATEPART(yyyy, (GETDATE()-1)))
Ну я для примера привел. Даже вашу существующую запись можно переписать парой разных способов )
К примеру, не выковыривать по частям дату...а преобразовать к виду "дата без времени"
што то типа так:

Код: Выделить всё

declare @dtm datetime
set @dtm = '2009-11-02 01:11:10.290'
select (convert(datetime,convert(varchar,@dtm,1),1))
------------------------------------------------------ 
2009-11-02 00:00:00.000
(1 row(s) affected)
Плюс, в 2008 MSSQL появился тип DATE к которому можно преобразовать.
Главное в жизни здоровье и любовь, остальное я все куплю.