Удалить время с сервера DateTime sql 2005 - PullRequest
6 голосов
/ 11 января 2011

Мне нужна часть даты от datetime.в формате "дд-мм-гггг"

Я попытался выполнить следующие действия:

Запрос:

select Convert(varchar(11), getdate(),101)

Вывод:

01/11/2011

Запрос

SELECT cast(floor(cast(GETDATE() as float)) as datetime)

Вывод

2011-01-11 00:00:00.000

Запрос:

SELECT 
    CONVERT(VARCHAR(MAX),DATENAME(DD,GETDATE())) + '-' + 
    CONVERT(VARCHAR(MAX),DATEPART(MONTH,GETDATE())) + '-' + 
    CONVERT(VARCHAR(MAX),DATENAME(YYYY,GETDATE())) `

Выход:

11-1-2011т. е. «дм-гггг»

Требуется вывод в формате «дд-мм-гггг».

Ответы [ 4 ]

13 голосов
/ 11 января 2011
SELECT CONVERT(VARCHAR(10),GETDATE(),105)
4 голосов
/ 11 января 2011

Здесь вы можете найти несколько примеров, как это сделать: http://blog.pengoworks.com/index.cfm/2009/1/9/Useful-tips-and-tricks-for-dealing-with-datetime-in-SQL

4 голосов
/ 11 января 2011

Попробуйте:

SELECT convert(varchar, getdate(), 105)

Подробнее здесь .

3 голосов
/ 04 ноября 2013

Использование функции CONVERT «работает», но только если вы сравниваете строки со строками.Чтобы эффективно сравнивать даты, вам действительно необходимо сохранять строго типизированный тип данных SMALLDATETIME с обеих сторон уравнения (т. Е. «=»).Поэтому вышеприведенный комментарий «apros» - действительно лучший ответ, потому что в упомянутом блоге есть правильные формулы, которые можно использовать для удаления компонента времени путем «выравнивания» его до полуночи (то есть 12:00:00) посредством округления и любого столбца даты вSQL Server 2005 всегда будет по умолчанию 12:00:00, если дата указана без времени.

Это сработало для меня ...

select dateadd(day, datediff(day, '20000101', @date), '20000101') 
...