преобразовать поле nchar (20) в тип данных datetime в sql server 2005 - PullRequest
0 голосов
/ 23 октября 2008

Мне нужно выбрать из таблицы и отфильтровать даты, превышающие указанная дата.

У меня проблема в том, что даты хранятся как nchar (20), а я не может конвертировать его в дату в предложении where.

SELECT CONVERT(DATETIME,log_time,20) from dbo.logs 
where CONVERT(DATETIME,log_time,20) > '10/20/2008' 

Сообщение 241, Уровень 16, Состояние 1, Строка 1 Преобразование не удалось при преобразовании даты и времени из символьной строки.

Ответы [ 6 ]

1 голос
/ 24 октября 2008

Я разговаривал с нашим администратором базы данных SQL Server. Он сказал, что проблема была в плохих данных. Он сказал, что в некоторые даты он был отстранен от утра или вечера. Он написал мне представление, где он обрабатывает проблему для меня, и теперь я могу выбрать из представления, и дата также является типом данных datetime.

Спасибо всем за помощь.

Билли

1 голос
/ 23 октября 2008

Это должно работать.

select convert(datetime, cast(rtrim(log_time), nvarchar)) from dbo.logs
where convert(datetime, cast(rtrim(log_time), nvarchar)) > '10/20/2008'
0 голосов
/ 27 марта 2009

Попробуйте

выберите конвертировать (datetime, cast (rtrim (log_time) AS nvarchar)) из dbo.logswhere convert (datetime, cast (rtrim (log_time) AS nvarchar))> '10 / 20/2008 '

или просто

выберите CAST (log_time AS DATETIME) из dbo.logs где CAST (log_time AS DATETIME)> '10/20/2008'

0 голосов
/ 23 октября 2008

Сообщение 1035, Уровень 15, Состояние 10, Строка 1 Неверный синтаксис рядом с «cast», ожидаемый «AS».

0 голосов
/ 23 октября 2008

Сообщение 195, Уровень 15, Состояние 10, Строка 1 'trim' не является распознанным именем встроенной функции.

0 голосов
/ 23 октября 2008

попробуйте это:

select convert(datetime, cast(trim(log_time), nvarchar)) from dbo.logs
where convert(datetime, cast(trim(log_time), nvarchar)) > '10/20/2008'

Я думаю, уловка в том, что вам нужно обрезать строку и привести к nvarchar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...