2012-11-15 39 views
1

目前,我填充下拉與下面的SQL:DropDown - 在Oracle SQL或ASP.NET中截斷日期時間?

SELECT REPORT_DATE FROM MY_TABLE 

儘管存儲在表中的值是按以下格式,dd-mon-yyyy(我的首選格式),填充我的下拉在不同的文本它也顯示時間,如dd-mon-yyyy hh:mm:ss AM

解決此問題的最佳方法是什麼?我知道Oracle SQL中的TRUNCTO_DATE函數。但我想我也可以通過DropDown循環來填充並截斷字符串。我曾嘗試下面的代碼,但它返回一個運行時錯誤:

For Each i As ListItem In DropDown1.Items 
     'Strip time here 
     i.Text.ToString("dd-MMM-yyyy") 
    Next 

從本質上講,我只是想環路我的下拉和只改變文本匹配`DD-MMM-YYYY」。我怎樣才能做到這一點?我應該使用SQL還是VB.NET?有最佳做法嗎?

謝謝!

回答

1

如果數據DateTime類型的,你可以簡單地指定在下拉列表中DataTextFormatString屬性像這樣:

<asp:dropdownlist DataTextFormatString ="{0:MM-dd-yyyy}" ... /> 

它應該請到UI層以所需格式顯示日期。如果可能的話,您應該儘量避免將日期轉換爲您希望在SQL語句中使用的格式。

2

你能做到這一點的SQL側

SELECT to_char(REPORT_DATE, 'dd-mon-yyyy') report_date FROM MY_TABLE order by report_date; 

附: 「存儲在表格中的值爲以下格式,dd-mon-yyyy」。日期不是這樣存儲的,它們在內部以7字節的數字形式存儲,您如何在select中看到它們完全取決於您的NLS_DATE_FORMAT設置。

+0

謝謝。我想知道Oracle是否在內部保留了完整的DateTime,並且在SQL Developer中查看它時只顯示Date。 – TimeBomb006

1

使用此字符串從Oracle

獲取數據
SELECT TO_CHAR(REPORT_DATE,'DD-MON-YYYY') FROM MY_TABLE 
1

嘗試

i.Text = Convert.ToDateTime(i.Text).ToString("dd-MMM-yyyy") 

不能在字符串中使用.ToString("dd-MMM-yyyy")日期格式。你需要將其轉換爲DateTime

您也可以嘗試<asp:DropDownList DataTextFormatString="{0:dd-MMM-yyyy}" />

1

最好在DropDownList中格式化日期,而不是讓sql執行它。

只需添加DataTextFormatString = 「{0:DD/MM/YYYY}」 你的DropDownList標籤:

<asp:DropDownList ID="DropDownList1" runat="server" 
     DataSourceID="SqlDataSource1" DataTextField="adddate" 
     DataTextFormatString="{0:dd/MM/yyyy}" DataValueField="adddate"> 
</asp:DropDownList>