1

目前,我正在使用以下 SQL 填充 DropDown:

SELECT REPORT_DATE FROM MY_TABLE

尽管存储在表中的值采用以下格式dd-mon-yyyy(我的首选格式),但填充我的 DropDown 的文本的不同之处在于它还显示时间,例如dd-mon-yyyy hh:mm:ss AM.

解决此问题的最佳方法是什么?我知道 Oracle SQL 中的TRUNC函数TO_DATE。但我想我也可以在填充后遍历 DropDown 并截断那里的字符串。我尝试了以下代码,但它返回运行时错误:

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

本质上,我只想循环我的 DropDown 并仅更改文本以匹配“dd-MMM-yyyy”。我怎样才能做到这一点?我应该使用 SQL 还是 VB.NET?有最佳实践吗?

谢谢!

4

5 回答 5

2

你可以用这个 sql 端

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

ps "存储在表中的值采用以下格式,dd-mon-yyyy"。日期不是这样存储的,它们在内部存储为 7 字节数字,您在选择时如何查看它们完全取决于您的 NLS_DATE_FORMAT 设置。

于 2012-11-15T14:25:12.403 回答
1

使用此字符串从 Oracle 获取数据

SELECT TO_CHAR(REPORT_DATE,'DD-MON-YYYY') FROM MY_TABLE
于 2012-11-15T14:25:42.987 回答
1

如果数据是 DateTime 类型,您可以简单地在下拉列表中指定 DataTextFormatString 属性,如下所示:

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

应该是到UI层以你想要的格式显示日期。如果可能,您应该尽量避免将用于将日期转换为您想要的格式的逻辑放在 SQL 语句中。

于 2012-11-15T14:27:39.917 回答
1

尝试

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

您不能.ToString("dd-MMM-yyyy")用于字符串的日期格式。您需要将其转换为 DateTime

你也可以试试<asp:DropDownList DataTextFormatString="{0:dd-MMM-yyyy}" />

于 2012-11-15T14:27:14.667 回答
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>
于 2012-11-15T14:34:04.350 回答