【问题标题】:SQL Server Compact 4.0 DateTimePicker select query between datesSQL Server Compact 4.0 DateTimePicker 在日期之间选择查询
【发布时间】:2014-01-22 19:08:54
【问题描述】:

使用 Winforms,.Net 4.5。

我有一个带有 DataGridView 的表单,我在 dataGridView 中插入了来自另一个表单的一些值,例如客户端名称和日期,我花了几个小时才弄清楚,我使用的是 SQL Server Compact 4.0,所以它只支持 DateTime 数据类型,这与 SQL Server 2008 左右不同,您可以在没有时间的情况下存储日期,所以我需要做的是在日期查询之间进行一些选择。

但在 SQL Server Compact 中,您只能存储日期的整个值,例如 24/02/2014 12:00 我只需要日期,而 SQL Server Compact 不允许我这样做。我尝试使用DateTimePicker.Text 将数据发送到 SQL Server Compact,但使用字符串您无法在日期之间进行选择,因为它们不是日期而是字符串。在这种情况下我能做什么,记住我只需要日期格式我不需要时间,还记得 SQL Server Compact 不能只存储日期。那么有什么方法可以在字符串之间进行选择(dateTimePicker.Text)?

【问题讨论】:

    标签: c# sql sql-server datagridview


    【解决方案1】:

    DateTime 存储在您的数据库中 - 您真的别无选择。

    如果您不需要时间 - 在执行选择时仅使用 DateTime 的 Date 部分。

    已编辑:

    我不确定你是如何选择的,但如果只是文本查询,那么

    WHERE 子句如下所示:

    "DateColumn >= '" + sd.ToShortDateString() + "' AND DateColumn <= '" + ed.ToShortDateString() + "'";
    

    其中sd是开始日期,ed是结束日期,在C#中都是DateTime类型,DateColumn是所在的列你保留你的日期。 同样的想法也适用于插入。

    SELECT 看起来像这样(返回 12/12/2013):

    select ltrim(str(DATEPART(month, DateColumn))) + ':' + ltrim(str(DATEPART(day, DateColumn))) + ':' + ltrim(str(DATEPART(year, DateColumn))) AS MyDate FROM TableName
    

    DATEPART 的通用用法:

    SELECT DATEPART(month, [DateColumn]) AS Month FROM TableName
    

    更多关于 DATEPART 的信息是here

    另外,请参阅 this postthis post

    【讨论】:

    • 是的,我好像没有,如何在执行选择时只选择 DateTime 的 Date 部分,老实说是第一次使用 DateTime 数据类型
    猜你喜欢
    • 2015-04-01
    • 2011-07-04
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 2012-03-12
    • 2013-02-11
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多