2012-04-20 2 views
0

Как я мог разделить диапазон дат, как этотSQL строка даты расколоть

20120301-20120331

на две разные даты в T-SQL? Данные отображаются в столбце date_range.

Спасибо!

+0

Какие СУБД? Какая версия? –

+0

Я предполагаю, что тип столбца - VARCHAR? Всегда ли формат всегда согласован (т. Е. Каждая дата в формате YYYYMMDD, и две даты всегда разделены ровно одним тире, без внутренних пробелов?) –

+0

Да, это всегда согласовано и является VARCHAR. Благодаря! – OBL

ответ

5

Предполагая, что SQL Server:

DECLARE @string VARCHAR(17) = '20120301-20120331'; 

SELECT 
    CONVERT(DATETIME, LEFT(@string, 8)), 
    CONVERT(DATETIME, RIGHT(@string, 8)); 

Из таблицы:

SELECT 
    CONVERT(DATETIME, LEFT(column_name, 8)), 
    CONVERT(DATETIME, RIGHT(column_name, 8)) 
FROM dbo.table_name; 
+0

Это не сработает, поскольку мне нужно сделать это по всей таблице, а не только по одной строке. :( – OBL

+1

@OBL - просто замените '@ string' на столбец вашей таблицы и добавьте' FROM YourTable' после выбора – Lamak

+0

. @variable был просто для демонстрации. Если вы хотите, чтобы код, который вам не нужен, делать любую работу вообще, чтобы сделать работу, рекомендуется указывать в вопросе имена таблиц и столбцов, о которых вы говорите (помимо того, что вы говорите о SQL Server, Oracle, MySQL и т. д.). –

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