考虑三个参数:
@Y=2014
@M=11
@D=24
我想在SQL Server中有一个函数,它获取三个数字并返回一个日期。
答案 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