1

ドロップダウンリストに入力する日付フィールドがあります。日付フィールドは次のよう2012-05-01 00:00:00になり、ドロップダウンリストは次のようになります5/2012。しかし、物事にレンチを入れるには、日付を分解してから、元に戻す必要があります。

具体的には、すべての「異なる」月とすべての「異なる」年を見つける必要がありますが、その年の月がある日付フィールドがある場合、またはその逆の場合にのみ、異なる年を見つけたいと思います。

だから私は次のデータを持っています

表:予算

id   Item   ItemDate
1     A     5/12/2012
2     B     5/14/2012
3     C     4/5/2012
4     D     4/7/2012
5     E     7/15/2011

したがって、ドロップダウンリストに次の情報のみを表示したいと思います。

5/2012
4/2012
7/2011

使ってみました

SELECT DISTINCT datepart(Month, ItemDate) + ' ' + datepart(year, ItemDate) As ddlList 
FROM Budget

しかし、それは年に月を追加します(5 + 2012 = 2017)。

そして私のasp

<asp:dropdownlist id="ddl1" runat="server" datasourceID="sqldatasrc" DataTextField="ddlList"></dropdownlist>

何か案は?私はこれについて正しい方法で進んでいるかどうかわかりません。

4

1 に答える 1

4

ASP.NET

私の記憶が正しければDataTextFormatString、DropDownListコントロールで使用可能なプロパティを使用して、境界フィールドの値をフォーマットできると思います。プロパティを値に設定する必要があります{0:M/yyyy}。宿泊施設が利用可能であることを確認してください。MSDNで見つかりませんでした。

ListControl.DataTextFormatStringプロパティしか見つかりませんでした

SQL

MONTHこれらの値を連結する前に、日時フィールド値のおよびYEAR部分をVARCHAR文字列データ型にキャストする必要があります。

デモ

SQL Fiddleでデモを表示するには、ここをクリックしてください。

脚本:

SELECT  
DISTINCT    CAST(DATEPART(MONTH, ItemDate) AS VARCHAR) + '/' + 
            CAST(DATEPART(YEAR, ItemDate) AS VARCHAR) AS ddlList 
FROM        dbo.Budget

同じスクリプトを作成する別の方法:

SELECT  
DISTINCT    CAST(MONTH(ItemDate) AS VARCHAR) + '/' + 
            CAST(YEAR(ItemDate) AS VARCHAR) AS ddlList 
FROM        dbo.Budget;

スクリプトを作成して挿入します。

CREATE TABLE dbo.Budget
(
     Id         INT         NOT NULL 
  ,  Item       VARCHAR(10) NOT NULL
  ,  ItemDate   DATETIME    NOT NULL
)

INSERT INTO dbo.Budget (Id, Item, ItemDate) VALUES
 (1, 'A', '05/12/2012'),
 (2, 'B', '05/14/2012'),
 (3, 'C', '04/05/2012'),
 (4, 'D', '04/07/2012'),
 (5, 'E', '07/15/2012');

出力:

DDLLIST
-------
4/2012
5/2012
7/2012
于 2012-05-07T19:59:46.803 に答える