【问题标题】:Converting int to Date将 int 转换为日期
【发布时间】:2016-10-28 14:45:05
【问题描述】:

当我的数据库中有数据类型 int 时,如何在 sql Server 中转换为日期?

例如: 2016年第10个月第4周第5天

【问题讨论】:

  • 一旦你解决了这个问题,你应该考虑尽快离开这个设计。您应该将日期存储在日期数据类型中。这就是它们的目的。
  • 那么对于示例值,结果应该是什么?
  • 结果:2016 年 10 月 28 日

标签: sql-server date


【解决方案1】:

使用可以DATEFROMPARTS函数

Select DATEFROMPARTS(Year,Month,Day) as Dates
From yourtable

如果您使用的时间少于 2012 年,那么

Select cast(cast(year as char(4))+'-'+cast(month as varchar(2))+'-'+cast(day as varchar(2)) as date) as dates
From yourtable

【讨论】:

  • 如果我只有第 2 周的第 5 天,我如何获得该月和该年的日期?
  • @Student - 添加样本数据和预期结果
  • 2016 年第 10 个月第 4 周的第 5 天结果:2016 年 10 月 28 日
【解决方案2】:

这是一种非常糟糕的存储日期信息的方式。使用它是一种严重的痛苦,几乎不可能验证。你真的应该为这种类型的事情使用本机日期数据类型。

这为您的示例生成了所需的输出。我想这就是你要找的。​​p>

create table #SomeDate
(
    MyDay int
    , MyWeek int
    , MyMonth int
    , MyYear int
)

insert #SomeDate
select 5, 4, 10, 2016

select dateadd(day, s.MyDay + 1, dateadd(week, s.MyWeek - 1, dateadd(month, s.MyMonth - 1, dateadd(year, s.MyYear - 1900, 0))))
from #SomeDate s

drop table #SomeDate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-19
    • 2022-10-05
    • 2020-10-03
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多