【问题标题】:Question on Converting ints to datetimes in TSQL在 SQL 中将整数转换为日期时间的问题
【发布时间】:2010-01-25 20:22:11
【问题描述】:

我有一个存储过程,它将所需月份和年份的 int 作为参数。它使用这些来比较我从中提取的表中的一些日期时间值。我需要将它们转换为 DateTime 值。我正在尝试做这样的事情:

CONVERT(DATETIME, CONVERT(varchar(4), @year) + '-' + Convert(varchar(2),@month) + '-01 00:00:00', 102))

构建“2009-6-1 00:00:00”字符串(对于那些参数值)。这似乎不起作用,关于如何做到这一点的任何其他建议?我觉得我太像程序员了……

这是 Sql Server 2008。

【问题讨论】:

    标签: sql-server sql-server-2008 datetime


    【解决方案1】:
    SELECT CAST(CAST(@Year AS VARCHAR(4))  + RIGHT('0' + CAST(@Month AS VARCHAR(2)), 2) + '01' AS DATETIME)
    

    应该这样做

    【讨论】:

      【解决方案2】:

      怎么样:

      DECLARE @year int;
      DECLARE @Month int;
      
      SET @year = 2010;
      SET @Month = 1
      
      SELECT CAST(LTRIM(@year * 10000 + @Month * 100 + 1) AS smalldatetime)
      

      【讨论】:

        【解决方案3】:

        使用DATEADD。

        DATEADD(month, @month - 1, DATEADD(year, @year - 1900, 0))
        

        【讨论】:

          【解决方案4】:

          使用YEAR 和MONTH 函数过滤日期。

          SELECT *
          FROM Sales
          WHERE YEAR(Sales.PurchaseDate) = @year
          AND MONTH(Sales.PurchaseDate) = @month
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-19
            • 1970-01-01
            • 2022-08-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多