2016-12-15 8 views
0

09/25/2016, 10/16/2016, 10/23/2016のようなデータを返すクエリがあります。Sept 25, 2016, Oct 16,2016, Oct 23,2016のように変換しています。私はConvert(nvarchar(20),CONVERT(datetime, '09/25/2016', 102), 107)のようなクエリを使用したいと思うような文字列に変換することができますが、データの一部をどのように変換して全体を変換できるかを構築することはできません。部分変換SQLの結果

+0

タグを使用しているデータベース(前とあなたの質問sumably SQL Server)。また、「細胞」とは何ですか?これはSQL用語ではありません。 –

+0

あなたは素晴らしいと思いますか? –

+0

いいえ、私はSQLを意味します。私は単一の行の単一の列の値が何のように呼び出されているのかよく分かりません。 – user2920788

答えて

3
あなたが本当にとにかくあなたがする必要があります後、あなたが何であるかを取得するには、あなたのテーブルのスキーマを修正する必要があり

.....(これは、データ正規化の単純なルールに従う場合にのみ、これははるかに簡単なクエリでした)。

サンプルデータ

declare @T Table (ID INT , DateValues VARCHAR(1000)) 
INSERT INTO @T VALUES 
(1 , '09/25/2016, 10/16/2016, 10/23/2016'), 
(2 , '10/25/2016, 11/16/2016, 12/24/2016'); 

クエリ

WITH X AS (
SELECT ID 
     , CONVERT(VARCHAR(12) 
       , CAST(LTRIM(RTRIM(Split.a.value('.', 'VARCHAR(100)'))) AS DATETIME) 
       , 107) Dates 
FROM 
    (SELECT ID 
      ,Cast ('<X>' + Replace(DateValues, ',', '</X><X>') + '</X>' AS XML) AS Data 
    FROM @T 
    ) AS t CROSS APPLY Data.nodes ('/X') AS Split(a) 
) 
SELECT ID 
    ,STUFF((SELECT ', ' + Dates 
      FROM X b 
      WHERE a.id = b.id 
      FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,2,'') AS DateValues 
FROM X a 
GROUP BY ID 

出力

╔════╦══════════════════════════════════════════╗ 
║ ID ║    DateValues    ║ 
╠════╬══════════════════════════════════════════╣ 
║ 1 ║ Sep 25, 2016, Oct 16, 2016, Oct 23, 2016 ║ 
║ 2 ║ Oct 25, 2016, Nov 16, 2016, Dec 24, 2016 ║ 
╚════╩══════════════════════════════════════════╝ 
+0

男の子!私は質問+1を誤読しましたか? –

0

以下、これを試してみてください:

SELECT FORMAT(GETDATE(),'MMM dd, yyyy')

したい任意の日付でGETDATE()を置き換える

関連する問題