首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ControlParameter中的日期导致日期格式错误

ControlParameter中的日期导致日期格式错误
EN

Stack Overflow用户
提问于 2014-01-06 20:24:24
回答 1查看 1.3K关注 0票数 1

我有一个vb.net网站,它有一个日期为ControlParameter的SQLDataSource。这在英国运行良好,但当在德国打开相同的页面时,由于日期格式不同,它会产生错误。

请参阅下面的示例代码

代码语言:javascript
复制
<asp:SqlDataSource ID="SQL" runat="server" ConnectionString="<%$ ConnectionStrings:xxxxxxxx %>"
    SelectCommand="
       SELECT * 
       from data
       where 
       DATEADD(minute, time, date) > convert(datetime,@dt,104)
">
    <SelectParameters>
        <asp:ControlParameter ControlID="DateSelection" Name="dt" PropertyName="SelectedItem.text" />
    </SelectParameters>
</asp:SqlDataSource>

有没有人知道如何解决这个问题

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-01-17 06:42:01

我真的不理解您的SQL逻辑,所以假设逻辑是合理的,我怀疑主要原因是因为SelectedItem的输出被视为string

因此,如果客户端PC的日期格式是"dd/MM/yyyy“,则值为"31/12/2014"string可以被解释为2014年12月31日。

但是,如果客户端PC的日期格式是"MM/dd/yyyy“,则会出现错误,因为没有第31个月。

您可以尝试在后端设置SelectCommand,而不是在前端使用ControlParameter,这应该会让您在操作数据时有更大的自由度。

aspx页面:

代码语言:javascript
复制
<asp:SqlDataSource ID="SQL" runat="server" ConnectionString="<%$ ConnectionStrings:xxxxxxxx %>" 
    SelectCommand="" >
</asp:SqlDataSource>

aspx.vb页面:

代码语言:javascript
复制
'assuming "SelectedItem" is a textbox
dim str As String = Convert.ToDateTime(SelectedItem.Text).ToString("dd MMM yyyy")

SQL.SelectCommand = "SELECT * from data where DATEADD(minute, time, date) > convert(datetime," + str + ",104)"

我将日期转换为"dd MMM yyyy“格式的原因是,无论PC使用什么日期格式,”2014年12月31日“将始终被视为2014年12月31日。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20949977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档