2012-04-20 55 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