Как я могу получить строки по определенной дате на сервере SQL? - PullRequest
4 голосов
/ 10 апреля 2011

Я работаю в проекте для PHP и SQL Server.

Владелец хочет, чтобы от меня на странице дизайна показывались только пользователи, которые зарегистрировались в тот же день

, т.е. если сегодня 11-3-2011 я хочу показать только всех пользователей, которые зарегистрировались в 11-3-2011

Таблица:

id  username  date

1   john      11\3\2011
2   sara      11\3\2011
3   john      5\1\2011
4   kreem     1\2\2011

я делаю это по mysql

where DATE_ADD( items.created_date, INTERVAL 1 DAY ) > NOW() 

этоКабель кода показывает данные, которые вставляются только в тот же день, что означает, что если сегодня 10-4-2011, он будет показывать только данные, которые вставляются в 10-4-2011, если я сегодня 15-4-2011, и я не буду вставлять ничего, что будетне показывать ничего, как я могу построить код, как это на сервере SQL?надеюсь, что мой вопрос ясен и понятен

Ответы [ 6 ]

5 голосов
/ 25 октября 2011

Для получения сегодняшней записи даты:

select * from tablename where date column between '2011-10-25 00:00:00' And '2011-10-25 23:59:59'
5 голосов
/ 10 апреля 2011
select id, userName
from YourTable
where CAST(date AS DATE) = CAST(GETDATE() AS DATE)

Функция GETDATE () возвращает текущую дату и время.

CAST (столбец как TYPE) будет представлять собой DateTime как просто Date, чтобы пропустить различияво времени

2 голосов
/ 30 октября 2012

select * from yourtable where date = CONVERT(VARCHAR(20),GETDATE(),101) // надеюсь, это будет полезно для получения значения текущей даты ..

1 голос
/ 10 апреля 2011

Этот запрос сравнивает только часть сегодняшнего дня, игнорируя время. Это работает в MS SQL Server, я не уверен насчет других последствий:

select *
from YourTable
where convert(datetime, floor(convert(float, GETDATE()))) = [date]
0 голосов
/ 29 марта 2012
SELECT * from YourTable
WHERE cast(convert(varchar(10),yourdate,101) as datetime) = 
cast(convert(varchar(10),[any day you want],101) as datetime)

Надеюсь, это поможет. Просто замените [любой день, который вы хотите] на значение даты или даты и времени

Функция CAST эквивалентна функции CONVERT, за исключением того, что convert позволяет использовать некоторые параметры форматирования. В моем примере я просто обрезал время от даты.

0 голосов
/ 10 апреля 2011
select *
from YourTable
where
  [date] >= '20110311' and
  [date] < '20110312'

Если вы хотите это на сегодня (всегда), вы можете использовать это

select *
from YourTable
where
  [date] >= dateadd(d, datediff(d, 0, getdate()), 0) and
  [date] < dateadd(d, datediff(d, 0, getdate())+1, 0)

Последние 10 дней.

select *
from YourTable
where
  [date] >= dateadd(d, datediff(d, 0, getdate())-9, 0)

Редактировать 1 Запрос с образцами данных и результатом

Определение таблицы

create table users
  (name varchar(20),
   user_register_date datetime)

Данные

insert into users values ('user today', getdate())
insert into users values ('user yesterday', getdate()-1)
insert into users values ('user 9 days ago', getdate()-9)
insert into users values ('user 10 days ago', getdate()-10)

Запрос

select *
from users
where user_register_date >= dateadd(d, datediff(d, 0, getdate())-9, 0)

Результат

name                 user_register_date
-------------------- -----------------------
user today           2011-04-14 08:29:28.407
user yesterday       2011-04-13 08:29:28.410
user 9 days ago      2011-04-05 08:29:28.410
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...