Нужна только дата от даты и времени - PullRequest
2 голосов
/ 14 июля 2009

У меня есть переменная типа DateTime в SQL. Просто нужно иметь часть даты.

помогите пожалуйста?

Ответы [ 10 ]

6 голосов
/ 14 июля 2009
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

Результат: «2009-07-14 00: 00: 00.000»

Редактировать : угадайте, что следующий вариант более распространен:

SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)

, поскольку шаблон day можно легко изменить на шаблон week или month. Это очень полезно, когда предложение GROUP BY должно группироваться по неделям месяца (отчеты).

3 голосов
/ 14 июля 2009

Если вам просто нужно varchar представление даты, вы можете использовать функцию convert , например,

select convert(varchar, getDate(), 102) /* 2009.07.14 */

Если вам нужна дата (полночь заданной даты), вы можете просто преобразовать ее обратно.

select convert(datetime, convert(varchar, getDate(), 102), 102)
3 голосов
/ 14 июля 2009

Найдено с помощью Google

ВЫБРАТЬ КОНВЕРТ (DATETIME, ЭТАЖ (КОНВЕРТ (FLOAT, GETDATE ())))

2 голосов
/ 14 июля 2009

SQL Server 2008 имеет тип данных date, в котором хранится только дата. Если вы используете эту версию, возможно, вам лучше использовать этот тип данных. Будьте осторожны, хотя Date не работает точно так же, как datetime для манипулирования данными.

2 голосов
/ 14 июля 2009
-- Sneaky CAST/DATEDIFF trick strips off the time to get just the day (midnight)!
CAST(DATEDIFF(d,0,DateField) AS DATETIME) AS DayField
1 голос
/ 14 июля 2009

Совет: Если вы обнаружите, что делаете это часто, вы можете создать скалярную пользовательскую функцию, содержащую выбранную вами логику.

Предупреждаем: в SQL Server 2000 есть несколько болезненных ошибок, связанных с UDF в ON предложениях.

1 голос
/ 14 июля 2009

Если вы хотите формат «ММ / ДД / ГГ», используйте «CONVERT (varchar, @datetimevalue, 1) для отображения только даты. Если вам нужно это в формате datetime, используйте« CONVERT (datetime, CONVERT (varchar) , @datetimevalue, 1)) ".

Я создал запись в своем блоге SQL о том, как извлечь и отобразить все возможные форматы функции CONVERT (varchar, ..):

http://jessesql.blogspot.com/2009/04/converting-datetime-values-to-varchar.html

1 голос
/ 14 июля 2009
SELECT DATEADD(day, DATEDIFF(day, '19900101', CURRENT_TIMESTAMP), '19900101')

Очень полезная статья: «Цель этой статьи - объяснить, как работают типы datetime в SQL Server, включая распространенные ошибки и общие рекомендации.» Полное руководство по типам данных datetime

Обратите внимание, что преобразование в varchar и обратно (convert (datetime, convert (varchar, getDate (), 102), 102)) намного медленнее.

0 голосов
/ 15 июля 2009

datepart (день, datetimevalue)

...