sql - 在 SQL Server 中查找在特定[月份]内未晋升的员工

标签 sql sql-server

我有一个名为 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 函数时,它总是以 [PromotedMonth] 形式返回一月

那么我该怎么做呢?

如何找出特定月份内哪位员工晋升?

最佳答案

您可以尝试使用DATENAME功能。

测试DDL

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

关于sql - 在 SQL Server 中查找在特定[月份]内未晋升的员工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51396026/

相关文章:

sql-server - SQL Server Varchar(max) 和占用的空间

mysql - 如何进行条件计数

mysql - SQL 外键和主键

sql - Postgres 选择非正则表达式查询

c# - 具有多个 ON OR 条件的 LINQ Left Join

sql-server - MS-Access 查询到 T-SQL

SQL Server : Sanitizing @param against injection attacks

sql - 使用列别名在 PostgreSQL 中进行操作时出错

java - Sql Server 忽略 varchar 列上的索引并在从 Java 查询时进行表扫描

sql-server - 此 .mdf 文件是什么版本的 SQL Server Express?