【问题标题】:How to find difference in days from DD-MM-YYYY formatted dates in SQL Server?如何从 SQL Server 中的 DD-MM-YYYY 格式日期中查找天数差异?
【发布时间】:2019-05-01 03:16:21
【问题描述】:

我想找出DD-MM-YYYY 格式的两个日期之间的差异。例如,我有 2 个日期 29-10-201829-11-2018。我想在 SQL Server 中找到这两个日期(30 天)之间的天数差异。

【问题讨论】:

标签: sql-server


【解决方案1】:

您可以更改当前会话的date format,然后使用DateDiff函数。

SET DATEFORMAT 'dmy'

SELECT DATEDIFF(DAY, '29-10-2018', '29-11-2018')

在将其添加到生产代码之前,我会检查更多关于 Set DateFormat 的信息。

这会更改 SESSION 日期格式,而不是 DATABASE。

[来自Previous Post的注释:这通常不是解决日期解释问题的方法。如果可以避免,不应将日期时间存储为字符串(改用日期时间或日期列)。如果您必须以字符串形式存储,请使用 ISO 8601 格式,该格式基本上为 YYYYMMDD]

【讨论】:

    【解决方案2】:

    使用 DATEDIFF

    SELECT  DATEDIFF(day, '2018-10-29 00:00:00.000', '2010-11-29 00:00:00.000')
    

    【讨论】:

      【解决方案3】:

      声明@date1 varchar(10),@date2 varchar(10)

      设置@date1 = '01-11-2018'

      设置@date2 = '28-11-2018'

      选择

              datefromparts(
                            right(left(@date2 ,10),4),
                            substring(left(@date2 ,10),4,2),
                            left(left(@date2 ,10),2)
                            )
      

      选择 日期差异 ( 天,

                      datefromparts( right(left(@date1 ,10),4),
      
                             substring(left(@date1 ,10),4,2),
      
                             left(left(@date1 ,10),2)
      
                           ),
      
              datefromparts( right(left(@date2 ,10),4),
      
                  substring(left(@date2 ,10),4,2),
      
                  left(left(@date2 ,10),2)
      
                  )
      
          )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 2016-01-02
        相关资源
        最近更新 更多