2012-04-20 52 views
0

我怎麼能在T-SQL分割日期範圍這樣SQL日期字符串分割

20120301-20120331

成兩個不同的日期?數據出現在名爲date_range的列中。

謝謝!

+0

哪個RDBMS?哪個版本? – 2012-04-20 18:00:14

+0

我假設列類型是VARCHAR?格式是否始終保持一致(即每個日期的格式爲YYYYMMDD,並且兩個日期總是用一個破折號分隔,而沒有內部空格?) – 2012-04-20 18:00:34

+0

是的,它始終保持一致並且是VARCHAR。謝謝! – OBL 2012-04-20 18:01:18

回答

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 2012-04-20 18:02:01

+1

@OBL - 只需將@字符串替換爲您的表的列,然後在選擇 – Lamak 2012-04-20 18:05:36

+0

之後添加一個「FROM YourTable」。@variable僅用於演示。如果您想要的代碼不必完成任何工作以完成工作,在問題中指定您正在討論的表名和列名是一個好主意(除了您是否在談論SQL Server,Oracle,MySQL等)。 – 2012-04-20 18:05:45