Как я могу получить только дату при использовании MSSQL GetDate ()? [дубликат]
этот вопрос уже есть ответ здесь:
DELETE from Table WHERE Date > GETDATE();
GETDATE () включает время. Вместо того, чтобы
2011-01-26 14:58:21.637
как я могу сделать:
2011-01-26 00:00:00.000
7 ответов:
небольшое смещение к SQL Server
- лучший подход для удаления части времени datetime в SQL Server
- самый эффективный способ в 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).
здесь у вас есть несколько решений ;)
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm
Comments