【问题标题】:SQL query to convert integer into date and find difference in number of monthsSQL查询将整数转换为日期并查找月数的差异
【发布时间】:2021-10-03 13:32:14
【问题描述】:

我有 2 个数字(整数) - 20210501 和 20210101,其中前 4 位数字代表年份,接下来的 2 位数字代表月份,最后 2 位数字代表日。我想编写一个 SQL 查询将这些整数转换为日期,然后找出两个日期之间的月差

【问题讨论】:

  • 只标记您使用的数据库。
  • 你试过什么?为什么它不起作用?在任何 RDBMS 中转换值都不是特别困难的任务。
  • 查看这个以获得更好的理解:sqlshack.com/…
  • 嗨@Chanandlerbong,请查看我的回答,如果有任何问题,请告诉我。

标签: sql sql-server date tsql integer


【解决方案1】:

首先将 varchar 转换为日期格式并获取月份差异

-- SQL 服务器

SELECT DATEDIFF(MONTH, CONVERT(varchar, CAST('20210101' AS DATE), 23), CONVERT(varchar, CAST('20210501' AS DATE), 23)) month_diff

另一种方式

-- SQL 服务器

SELECT DATEDIFF(MONTH, CAST(CONVERT(varchar, CAST('20210101' AS DATE), 23) AS date), CAST(CONVERT(varchar, CAST('20210501' AS DATE), 23) AS date)) month_diff

【讨论】:

    【解决方案2】:

    您的两个整数的日期格式很方便。因此,您可以转换为字符串,然后转换为日期并使用datediff()

    select datediff(month,
                    convert(date, convert(varchar(255), @val1)),
                    convert(date, convert(varchar(255), @val2))
                   )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2019-11-17
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多