Sql server 2008 如何将数字转换为日期

Sql server 2008 如何将数字转换为日期,sql-server-2008,Sql Server 2008,如何将数字转换为日期 例如: 我想输入数字为31,它应该找到所有月份的日期为31,它应该显示出本年度的如下内容 Date Day 31-01-2013 Thursday 31-03-2013 Sunday 以及如何将数字转换为日期。我不确定这是否正是您想要做的,但如果您先创建一个,那么这是一个非常简单的查询: select [Date], [Day] from dbo.Calendar where YearNumber = 2013 and DayNumbe

如何将数字转换为日期

例如:

我想输入数字为31,它应该找到所有月份的日期为31,它应该显示出本年度的如下内容

Date           Day
31-01-2013     Thursday
31-03-2013     Sunday

以及如何将数字转换为日期。

我不确定这是否正是您想要做的,但如果您先创建一个,那么这是一个非常简单的查询:

select [Date], [Day]
from dbo.Calendar
where YearNumber = 2013 and DayNumber = 31
您可以使用该函数将日期列中的日期与您提供的值进行比较。然后,您可以使用获取工作日:

declare @val int = 31

select dt, datename(dw, dt)
from yourtable
where day(dt) = @val
请参见

MS SQL Server 2008架构设置

declare @Day int;
set @Day = 31

select D.D,
       datename(weekday, D.D) as DOW
from (values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) as M(M)
  cross apply (select dateadd(day, 
                              @Day - 1, 
                              dateadd(month, 
                                      M.M - 1, 
                                      dateadd(year, 
                                              year(getdate()) - 1, 
                                              cast('00010101' as date))))) as D(D)
where day(D.D) = @Day
|          D |       DOW |
--------------------------
| 2013-01-31 |  Thursday |
| 2013-03-31 |    Sunday |
| 2013-05-31 |    Friday |
| 2013-07-31 | Wednesday |
| 2013-08-31 |  Saturday |
| 2013-10-31 |  Thursday |
| 2013-12-31 |   Tuesday |
查询1

declare @Day int;
set @Day = 31

select D.D,
       datename(weekday, D.D) as DOW
from (values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) as M(M)
  cross apply (select dateadd(day, 
                              @Day - 1, 
                              dateadd(month, 
                                      M.M - 1, 
                                      dateadd(year, 
                                              year(getdate()) - 1, 
                                              cast('00010101' as date))))) as D(D)
where day(D.D) = @Day
|          D |       DOW |
--------------------------
| 2013-01-31 |  Thursday |
| 2013-03-31 |    Sunday |
| 2013-05-31 |    Friday |
| 2013-07-31 | Wednesday |
| 2013-08-31 |  Saturday |
| 2013-10-31 |  Thursday |
| 2013-12-31 |   Tuesday |

declare @Day int;
set @Day = 31

select D.D,
       datename(weekday, D.D) as DOW
from (values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) as M(M)
  cross apply (select dateadd(day, 
                              @Day - 1, 
                              dateadd(month, 
                                      M.M - 1, 
                                      dateadd(year, 
                                              year(getdate()) - 1, 
                                              cast('00010101' as date))))) as D(D)
where day(D.D) = @Day
|          D |       DOW |
--------------------------
| 2013-01-31 |  Thursday |
| 2013-03-31 |    Sunday |
| 2013-05-31 |    Friday |
| 2013-07-31 | Wednesday |
| 2013-08-31 |  Saturday |
| 2013-10-31 |  Thursday |
| 2013-12-31 |   Tuesday |

为什么您的问题被标记为[sql-server-2008]?您的问题有点不清楚,并且在您的问题中没有提到SQL Server。@标记是让人们知道他们正在使用什么数据库。每个数据库的DateTime函数都会更改。