2012-11-15 104 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>