2012-06-06 4 views
-1

Я пытаюсь преобразовать varchar в datetime.Преобразование даты и времени в SQL Server 2008

SELECT 
    CONVERT(DATETIME, CONVERT(VARCHAR, YEAR(GETDATE())) + '/' + 
    CONVERT(VARCHAR, MONTH(GETDATE())) + '/' + 
    CONVERT(VARCHAR, DAY(GETDATE()) + 27), 120) 

Я ожидаю результат

2012-07-02 00:00:00.000 

Но мой сценарий бросает ошибку.

Пожалуйста, помогите мне.

Благодаря Gurej

+2

Сообщения об ошибках часто разработаны, чтобы помочь вам, предоставив полезную информацию. Даже если вы не сможете извлечь из него полезную информацию, возможно, те, кто поможет вам. * Что говорит сообщение об ошибке? * –

+1

похоже, что плакат фактически пытается удалить временную часть .... –

+1

Всякий раз, когда вы используете 'CONVERT (VARCHAR, ...)', вы должны ** указать длину ** для 'VARCHAR'! В противном случае вы можете получить неприятные сюрпризы ..... поэтому используйте 'CONVERT (VARCHAR (50), .....)' –

ответ

3

Почему вы начинаете с datetime, munging его varchar, а затем литье обратно datetime?

Является ли ваш реальный вопрос: «Как удалить временную часть даты и времени?»

Если да, то вы делаете это так:

select DATEADD(day, DATEDIFF(day, 0, getdate()), 0) 

или SQL Server 2008 года, просто:

select cast(CAST(getdate() as date) as datetime) 

Или даже объявить о лежащей в основе переменной/столбец как date и использовать

select CAST(getdate() as date) 
+1

Получил ans.Thanks много – Gulrej

+1

не стесняйтесь повышать и принимать: [Как принимает ответ работы?] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

Смежные вопросы