2015-06-18 7 views
1

У меня есть функция SQL, которая извлекает данные, но у меня есть проблема с базой данных, тот, кто ее обработал, прежде чем сделать поле NVARCHAR вместо DATETIME, так что теперь я не могу разобраться дату или выбор данных между диапазонами.SQL Преобразование NVARCHAR в Datetime по запросу

Предположительно у меня есть запрос:

Select order_confirmation.oc_number as oc, 
order_confirmation.count as cnt, 
order_confirmation.status as stat, 
order_confirmation.po_number as pon, 
order_summary.date_delivered as dd, 
order_summary.delivery_quantity as dq, 
order_summary.is_invoiced as iin, 
order_summary.filename as fn, 
order_summary.invoice_number as inum, 
order_summary.oc_idfk as ocidfk, 
order_summary.date_invoiced as di 
FROM 
order_confirmation,order_summary 
where order_confirmation.id = order_summary.oc_idfk 
order by order_summary.date_delivered DESC 

Я хочу, чтобы преобразовать order_summary.date_delivered в формат DATETIME так, что ORDER BY заявление будет работать должным образом. Пожалуйста, обратите внимание, что я не хочу постоянно изменять тип данных в структуре базы данных, только в запросе. Я попытался найти и попробовать другое решение, но не буду работать, и я еще не знаком с SQL Server.

Благодаря

Помощники:

enter image description here

enter image description here

+0

Просто use 'convert (datetime, date_delivered, )'. Затем исправьте свои данные, чтобы сохранить значения даты/времени с помощью соответствующего типа - и это не строка. –

+0

Я получил это, ошибка арифметического переполнения, преобразующая выражение в тип данных datetime. Я выбрал 110 как тип – jackhammer013

+0

Настройте SQL-скрипт с образцами данных, и кто-то может вам помочь. Как мы узнаем, как выглядят ваши даты? –

ответ

-1

ОБНОВЛЕНО Основываясь на хорошей точке Iconic и мы надеемся исправить вашу проблему переполнения использования формата 105 с вашим CONVERT

Select order_confirmation.oc_number as oc, 
order_confirmation.count as cnt, 
order_confirmation.status as stat, 
order_confirmation.po_number as pon, 
order_summary.date_delivered as dd, 
order_summary.delivery_quantity as dq, 
order_summary.is_invoiced as iin, 
order_summary.filename as fn, 
order_summary.invoice_number as inum, 
order_summary.oc_idfk as ocidfk, 
order_summary.date_invoiced as di 
FROM 
order_confirmation,order_summary 
where order_confirmation.id = order_summary.oc_idfk 
order by CONVERT(datetime, order_summary.date_delivered, 105) DESC 
+0

Я бы предложил вариант CONVERT, так как он предоставляет тип данных. Cast не будет конвертировать в другой формат даты. – Ionic

+0

По типу данных вы имеете в виду формат? Если это так, то кто заботится о том, что такое формат, когда вы используете только поле для сортировки. – jradich1234

+0

Пробовал и сэр. такая же ошибка. Ошибка арифметического переполнения, преобразующая выражение в тип данных datetime. – jackhammer013

3

на вашем заказе путем использования п:

order by convert(datetime,order_summary.date_delivered, X) 

где X = 100101102 ... в зависимости от формата, который вы хотите иметь

Here вы можете увидеть более подробную информацию для функции новообращенного

+0

Я бы предложил вариант CONVERT, поскольку он предоставляет тип данных.Cast не будет конвертировать в другой формат даты. – Ionic

+0

Я получил это сообщение. Ошибка арифметического переполнения, преобразующая выражение в тип данных datetime. – jackhammer013

+0

Какие данные вы вкладываете в него. Это строка? Может быть, есть некоторые промахи из-за неправильного ввода. – Ionic

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