【问题标题】:sql server find date difference in days input date format is dd/mm/yyyysql server 以天为单位查找日期差异 输入日期格式为 dd/mm/yyyy
【发布时间】:2013-05-28 12:53:48
【问题描述】:

我正在开发一个项目,我希望我的日期格式为dd/mm/yyyy(印度格式/英国格式)。在我的数据库表中,我为此字段使用了字符串数据类型。

我有 2 个字段 In_date 和 Out_date 通过这些我正在计算 Total_days。

现在我想计算这两个日期之间的天数差异。 SQL Server 的默认格式为mm/dd/yyyy。每当我执行

select Datediff(DAY, 'In_date', 'Out_date') from Table;

它给了我错误从/到字符串转换日期时出错。但是当我执行

select Datediff(DAY, '05/28/2013', '05/26/2013') from Table;

它给了我完美的答案。

请帮忙。

【问题讨论】:

    标签: c# sql-server sql-server-2008 c#-4.0


    【解决方案1】:

    您应该只在数据库中将日期存储为DateTimes。这将允许您正确比较日期。格式化应该在您的应用程序层中处理。

    【讨论】:

    • 是的,兄弟,您是对的,但客户要求将日期存储在不同的字段中,将时间存储在不同的字段中,格式为 dd/mm/yyyy,时间为 hh:mm。
    • 在这种情况下,删除第一个示例中列名周围的撇号,它应该可以工作......但它的设计很糟糕。告诉你的客户他们不应该规定技术要求:-)
    • 兄弟。我已经告诉他们很多次了,但他们不听。 “客户为王”到底该怎么办?
    • 如果客户要求某种不合理或不恰当的技术方法,请相应地向他们收费。为他们设定一个较低的价格,让您正确地做事,如果他们决定应该处理的基础技术细节,则设定更高的价格。
    【解决方案2】:

    试试这个 -

    SET DATEFORMAT mdy
    SELECT DATEDIFF(DAY, '05/28/2013', '05/26/2013')
    

    但最好使用 ISO 日期格式 (ymd):

    SELECT DATEDIFF(DAY, '20130528', '20130526')
    

    【讨论】:

      【解决方案3】:

      试试这个:

      SET DATEFORMAT dmy;
      
      select Datediff(DAY, In_date, Out_date) from Table;
      

      【讨论】:

      • @BeingJaved:这有帮助吗?
      【解决方案4】:

      它试图将列名转换为日期,但它们不是日期。删除 'In_date' 和 'Out_date' 周围的撇号,它会将它们识别为列而不是字符串。

      select Datediff(DAY, In_date, Out_date) from Table
      

      【讨论】:

      • 不起作用。我的格式是 dd/mm/yyyy 而 sql server 的格式是 mm/dd/yyyy
      【解决方案5】:
      select Datediff(DAY, In_date, Out_date) from Table;
      

      【讨论】:

        猜你喜欢
        • 2019-05-01
        • 1970-01-01
        • 2011-12-19
        • 2015-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-14
        相关资源
        最近更新 更多