如何在SQL Server中找到与DD-MM-YYYY格式的日期的天数差异?

时间:2018-11-29 05:44:24

标签: sql-server

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

3 个答案:

答案 0 :(得分:1)

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

SET DATEFORMAT 'dmy'

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

在将其添加到生产代码之前,我将详细检查Set DateFormat

这将更改SESSION日期格式,而不是数据库。

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

答案 1 :(得分:0)

使用DATEDIFF

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

答案 2 :(得分:0)


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

set @ date1 = '01 -11-2018'

set @ date2 = '28 -11-2018'

选择

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

选择         DATEDIFF                 (                     DAY,

                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)

            )

    )