设置和声明 - 传递列内容 -

Set and Declare - passing a column content -

我在网上看到下面的说法,解决了我80%的问题,但我需要通过这个过程来传递一个专栏,而不是像下面这样设置一个标准日期 (SET @Date = '25032014';).

DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';

DECLARE @Date2 CHAR(10);
SET @Date2 = STUFF(STUFF(@Date, 3, 0, '/'), 6, 0, '/');

SELECT @Date2, CONVERT(DATE, @Date2, 103); -- 103 = dd/mm/yyyy
-- 25/03/2014     2014-03-25

非常感谢您的回答,因为我在这里快疯了 - 我相信这是一个很容易回答的问题

您可以将其转换为 select 语句,假设有一个 table MyTable 和您要在 MyDate

上操作的列
DECLARE @Date2 CHAR(10);
SET @Date2 = STUFF(STUFF(@Date, 3, 0, '/'), 6, 0, '/');

会变成

SELECT STUFF(STUFF(MYDate, 3, 0, '/'), 6, 0, '/') AS date2 
FROM MyTable

最后一个查询可以使用子查询来编写

SELECT date2, CONVERT(DATE, date2, 103) from (
  SELECT STUFF(STUFF(MYDate, 3, 0, '/'), 6, 0, '/') AS date2 
  FROM MyTable
) as tbl