将三个int参数转换为一个日期

时间:2014-11-24 12:16:55

标签: sql sql-server sql-server-2008 function

考虑三个参数:

@Y=2014
@M=11
@D=24

我想在SQL Server中有一个函数,它获取三个数字并返回一个日期。

7 个答案:

答案 0 :(得分:6)

您可以使用SQL Server 2012 DATEFROMPARTS功能。

SELECT DATEFROMPARTS(@year, @month, @day)

对于2012年以下的版本,我会使用:

SELECT CONVERT(DATETIME, STR(@year * 10000 + @month * 100 + @day))

答案 1 :(得分:1)

你可以这样做:

select cast(cast( (@y * 10000 + @m * 100 + @d) as varchar(255)) as date)

但如果您使用的是SQL Server 2012 +,则datefromparts()最佳。

答案 2 :(得分:0)

create function dbo.formatDate(@Y int, @M int, @D int)
returns date
as
begin
    declare @retDate date
    select @retDate =  cast(cast(@Y as varchar) + '-' + cast(@M as varchar) + '-' + cast(@D as varchar) as date)
    return @retDate
end

测试:

select dbo.formatDate(2014, 11, 24)

答案 3 :(得分:0)

SELECT CONCAT(day, '/', month, '/', year) AS Date

答案 4 :(得分:0)

这是这个问题的副本

https://stackoverflow.com/a/1923918/3632420

SELECT
   CAST(
      CAST(year AS VARCHAR(4)) +
      RIGHT('0' + CAST(month AS VARCHAR(2)), 2) +
      RIGHT('0' + CAST(day AS VARCHAR(2)), 2) 
   AS DATETIME)

答案 5 :(得分:0)

如果您使用的是SQL Server 2000及以上,请使用以下查询

Select MyDate=cast(DateAdd(day, @DayOfMonth - 1, 
          DateAdd(month, @Month - 1, 
              DateAdd(Year, @Year-1900, 0))) as date) 

如果您使用SQL Server 2012及以上版本,请使用内置函数DATEFROMPARTS

select DATEFROMPARTS(@year, @month, @day)

答案 6 :(得分:0)

试试这个,

declare  @Y int=2014
declare  @M  int =11 
declare  @D int =2

SELECT CONVERT(VARCHAR(12), (SELECT Cast(@d AS VARCHAR(20)) + '-'
                                    + Cast(@M AS VARCHAR(20)) + '-'
                                    + Cast(@y AS VARCHAR(20))), 110) 

更改不同格式所需的110

formats in sql server datetime conversion