2012-04-23 84 views
-1

據我網對發現的聲明如何在mm/yyyy格式的gridview列中顯示日期?

SELECT DATEPART(MONTH,columnName),DATEPART(YEAR,columnName) 

做和2列,列出結果。我需要的是顯示日期從數據庫(MS SQL)在單個列的格式,如mm/yyyy。

有沒有辦法在一列顯示呢?

+0

你能否澄清一下,你的標題是「mm-yyyy」,但問題主體是「mm/yyyy」。這不是一個很大的區別,但我們希望答案是準確的,並反映你最終的結果。 – 2012-04-23 20:04:08

+0

@ Aron,這是mm/yyyy。我用下面的語句解決了我的問題:SELECT RIGHT(CONVERT(VARCHAR(10),columnName,103),7)[DATE1] FROM tableName。我的項目要求是通過發送日期作爲參數來顯示存儲在MS SQL中的日期列。所以我以dd/MM/yyyy格式創建了組合框和存儲日期。使用上面寫的查詢和以這種格式填充的日期,我可以從應用程序中的數據庫中檢索結果,但是如果以MM/yyyy格式發送date作爲參數,我無法做到這一點。我很困惑,因爲我從所需的格式從SQL Server中檢索數據? – black12 2012-04-23 20:15:07

+0

您需要將演示文稿與數據分開。例如,您應該以任何區域格式顯示日期,但您應該向SQL Server發送安全且明確的日期(例如YYYYMMDD)。當然,您的組合框控件可以幫助您規定您發送回SQL Server的字符串格式... – 2012-04-23 20:21:23

回答

1

既然你已經明確地提出了GridView,它是在最後的地方格式化日期時間很好的做法。所以我會建議使用的.NET方法String.FormatToString

String formatted = date.ToString("MM-yyyy"); 

或者用BoundFieldDataFormatString

<asp:GridView ID="GridView1" runat="server"> 
    <Columns> 
     <asp:BoundField DataFormatString="{0:MM-yyyy}" DataField="DateField" HeaderText="Date" ReadOnly="True" /> 
    </Columns> 
</asp:GridView> 
+0

是「mm」還是「MM」?在SQL Server 2012版本的'FORMAT()'(它是從.NET版本派生的)中,'mm'給我幾分鐘,而不是幾個月。 – 2012-04-23 16:15:15

+0

@AaronBertrand:正如我所指出的,我不會使用dbms格式化或轉換日期時間字段。因此上面是C#。也許他需要在程序的另一個地方使用日期時間,所以你通常需要轉換字符串。 – 2012-04-23 16:19:06

+1

但在C#中'mm'確實是月份數而不是分鐘?我瞭解你對數據庫格式的反對意見,但有時它是合適的(例如,考慮同一查詢的多個消費者,用不同語言編寫並由不同團隊維護)。 – 2012-04-23 16:21:20

1
SELECT RIGHT('0' + CONVERT(VARCHAR(2), MONTH(columnName)), 2) 
    + '/' + CONVERT(CHAR(4), YEAR(columnName)) 
FROM dbo.tableName; 

你也可以這樣說:

SELECT RIGHT(CONVERT(CHAR(10), columnName, 103), 7) 
    FROM dbo.tableName; 

在SQL Server 2012中,你將能夠說:

SELECT FORMAT(columnName, 'MM/yyyy') FROM dbo.table; 
+0

@Aron Bertrand, – black12 2012-04-23 19:54:50

0

嘿,你可以在GridView的設置格式類似下面

<asp:TemplateField > 
    <ItemTemplate> 
      <asp:Label Text='<%# Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "Created_Date ")).ToString("mm-yyyy")%>' 
    ID="lblCreatedDate" runat="server"></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 
相關問題