我有一个名为tblemployees
的表,在该表中,我想要一个在特定月份未晋升的员工的输出。
Create table tblEmployees
(
Id int Identity Primary key,
Name nvarchar(40),
PromotedMonth int
)
----------------------------
| Id | Name | PromotedMonth |
|----|------|---------------|
| 1 | Mark | 03 |
| 2 | Mary | 12 |
-----------------------------
我想要这样的输出:
----------------------------
| Id | Name | PromotedMonth |
|----|------|---------------|
| 1 | Mark | March |
| 2 | Mary | December |
-----------------------------
每次我使用DatName
函数时,它总是返回1月为[PromotedMonth]
那我该怎么办?
如何确定在特定月份升职的员工?
答案 0 :(得分:2)
您可以尝试使用DATENAME功能。
TestDDL
CREATE TABLE T(
ID INT,
NAME VARCHAR(10),
PromotedMonth INT
);
INSERT INTO T VALUES (1,'T',3);
INSERT INTO T VALUES (2,'T1',12);
查询
SELECT id,
name,
DATENAME(month, DATEADD(month, PromotedMonth -1 , CAST('1900-01-01' AS datetime))) AS 'PromotedMonth'
FROM T
结果
| id | name | PromotedMonth |
|----|------|---------------|
| 1 | T | March |
| 2 | T1 | December |
sqlfiddle:http://sqlfiddle.com/#!18/69b30/3
答案 1 :(得分:0)
使用datename()
函数获取月份名称:
select *, datename(month, dateadd(mm, PromotedMonth-1, 0))
from tblEmployees e;
无需使用cast()
进行日期时间对话。只需使用0
作为未指定的日期组件即可设置默认日期1900-01-01
。