Я ищу хороший оператор SQL, чтобы выбрать все строки предыдущего дня из одной таблицы. Таблица содержит один столбец datetime. Я использую SQL Server 2005.
sql
sql-server
sql-server-2005
рудиметр
источник
источник
SELECT *
все даты будут возвращены с исходным временем.SELECT getdate(),dateadd(day,datediff(day,1,GETDATE()),0)
получаю:2016-02-01 10:27:54.733 2016-01-31 00:00:00.000
Чтобы получить значение «сегодня» в SQL:
Чтобы получить «вчера»:
Чтобы получить «сегодня минус X дней»: замените -1 на -X.
Итак, для всех вчерашних строк вы получите:
источник
Кажется, очевидного ответа не было. Чтобы получить все данные из таблицы (Ttable), где столбец (DatetimeColumn) представляет собой дату и время с меткой времени, можно использовать следующий запрос:
Это можно легко изменить на сегодня, в прошлом месяце, в прошлом году и т. Д.
источник
DatetimeColumn BETWEEN DATEADD(day, DATEDIFF(day, 1, GETDATE()) ,0) AND DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
что он должен оценивать DATEDIFF () в каждой строкеисточник
Это действительно старая тема, но вот мое мнение о ней. Вместо двух разных предложений, одно больше и меньше. Я использую этот синтаксис ниже для выбора записей из даты A. Если вам нужен диапазон дат, вам подойдут предыдущие ответы.
В приведенном выше случае X будет -1 для вчерашних записей.
источник
Не могу сейчас протестировать, но:
источник
Это должно сделать это:
источник
В SQL Server сделайте так:
Вы должны привести обе стороны выражения к дате, чтобы избежать проблем с форматированием времени.
Если вам нужно более подробно контролировать интервал, попробуйте что-то вроде:
источник
Другой способ сказать это «вчера» ...
Вероятно, это не сработает 1 января, а также в первый день каждого месяца. Но на лету это эффективно.
источник
Что ж, проще привести столбец datetime к дате и чем сравнивать.
источник
subdate (now (), 1) вернет метку времени вчерашнего дня. Приведенный ниже код выберет все строки со вчерашней меткой времени.
источник