Подтвердить что ты не робот

Как получить только дату при использовании MSSQL GetDate()?

DELETE from Table WHERE Date > GETDATE();

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

2011-01-26 14:58:21.637

Как я могу получить:

2011-01-26 00:00:00.000
4b9b3361

Ответ 1

Небольшое смещение к 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 - в этом случае вы бы использовали подход CONVERT непосредственно в GETDATE(), например,

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

Ответ 2

Для 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

Ответ 3

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

например. в PostgreSQL вы делаете бросок (myvalue как дата).

Ответ 4

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

Ответ 5

Вы можете использовать

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

Ответ 6

CONVERT(varchar,GETDATE(),102)