Як я можу отримати поточну дату без часової частини в SQL Server 2005? Я використовую, GETDATE()
але хотів би, щоб він мав час 00: 00: 00.0
Як я можу отримати поточну дату без часової частини в SQL Server 2005? Я використовую, GETDATE()
але хотів би, щоб він мав час 00: 00: 00.0
Відповіді:
Швидко , якщо вам доведеться перебрати і записи не мають дат в SQL Server 2008
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
Це два різні та чудові відповіді на StackOverflow: один , два
Конверсії Вархара - один з найгірших способів зробити це. Звичайно, для однієї вартості це може не мати значення, але це хороша звичка вступати.
Цей спосіб також є детермінованим, скажімо, якщо ви хочете проіндексувати обчислений стовпець. Навіть люди, які пишуть книги про SQL Server, потрапляють у перетворення дат
Цей прийом також можна розширити.
DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)
Редагувати:
Як я вже говорив про детермінізм, варчарські методи не є безпечними, якщо ви не використовуєте стиль 112.
Інші відповіді тут вказують, що ви ніколи не застосовуватимете це до стовпця. Це правильно, але ви, можливо, захочете вибрати 100k рядків або додати обчислюваний стовпець або GROUP BY dateonly. Тоді вам доведеться скористатися цим методом.
Інша відповідь також зазначає стиль 110. Це не є безпечним для мови чи SET DATEFORMAT і не вдається встановити "британську" мову. Дивіться остаточний посібник щодо типів даних про дату Тибора Каразі.