Как я могу получить только дату при использовании MSSQL GetDate ()? [дубликат]


этот вопрос уже есть ответ здесь:

DELETE from Table WHERE Date > GETDATE();

GETDATE () включает время. Вместо того, чтобы

2011-01-26 14:58:21.637

как я могу сделать:

2011-01-26 00:00:00.000
7   59   2011-01-26 23:59:03

7 ответов:

небольшое смещение к SQL Server

резюме

DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

SQL Server 2008 имеет date хотя тип. Так что просто используйте

CAST(GETDATE() AS DATE)

изменить: чтобы добавить один день, сравните с днем до "нуля"

DATEADD(day, DATEDIFF(day, -1, GETDATE()), 0)

от cyberkiwi:

альтернатива, которая не включает в себя 2 функции (+1 может быть в скобках или на нашей стороне).

DATEDIFF(DAY, 0, GETDATE() +1)

DateDiff возвращает число, но для всех целей это будет работать как дата, где вы собираетесь использовать это выражение, за исключением преобразования его в VARCHAR напрямую - в этом случае вы бы использовали метод преобразования непосредственно на GETDATE(), например

convert(varchar, GETDATE() +1, 102)

для SQL Server 2008, лучший и индекс дружественный способ

DELETE from Table WHERE Date > CAST(GETDATE() as DATE);

для предыдущих версий SQL Server математика даты будет работать быстрее, чем преобразование в varchar. Даже преобразование в varchar может дать вам неверный результат, из-за региональных настроек.

DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());

Примечание: нет необходимости, чтобы обернуть DATEDIFF С другой DATEADD

Это зависит от базы данных. Вы не указали, какой компонент database engine вы используете.

например, в PostgreSQL вы делаете cast (myvalue as date).

SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))

можно использовать

DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);
CONVERT(varchar,GETDATE(),102)

здесь у вас есть несколько решений ;)

http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm