我正在尝试使用日期时间来查找某个 PName 一月期间的出生日期 (DOB)。我有一个在 SQL Server 中工作的简短部分,但我想找出一月或第一个月的出生日期。它在 SQL Server 中适用于整个数据库,但是当我只想查找数据库的特定月份 (DOB) 时,我找不到正确的方法来纠正它。根据互联网上的甲骨文是这样写的:
SELECT DOB, NAME FROM PROGRAMMER WHERE TO_CHAR(DOB,'MON') LIKE 'JAN';
我正在尝试寻找 SQL Server - 具有 DOB 的程序员 - 比如说一月
Jan 出生日期的姓名和日期
SELECT TOP (1000) [Programmer_Id]
, [PName]
**, [DOB]**
, [DOB2]
, [DOJ]
, [DOJ2]
, [Gender]
, [Prof1]
, [Prof2]
, [Salary]
, [Salary2]
FROM [Studies_S_P_no_foreign].[dbo].[Programmer]
SELECT
DATEPART(month, DOB) [month] --@d2 DOB '2019-01-01 14:30:14'
--where DOB is like 1
From Programmer
[Programmer_Id],[PName], [DOB], [DOB2], [DOJ], [DOJ2], [Gender], [Prof1], [Prof2], [Salary], [Salary2]
1 ANAND 1966-04-12 00:00:00.000 1966-04-01 1992-04-21 00:00:00.000 1992-04-21 M PASCAL BASIC 3200 3200.00
2 ALTAF 1964-07-02 00:00:00.000 1964-07-02 1990-11-13 00:00:00.000 1990-11-13 M CLIPPER COBOL 2800 2800.00
3 JULIANA 1960-01-31 00:00:00.000 1960-01-31 1990-04-21 00:00:00.000 1990-04-21 F COBOL DBASE 3000 3000.00
4 KAMALA 1968-10-30 00:00:00.000 1968-10-30 1992-01-02 00:00:00.000 1992-01-02 F C DBASE 2900 2900.00
5 MARY 1970-06-24 00:00:00.000 1970-06-24 1991-02-01 00:00:00.000 1991-02-01 F CPP ORACLE 4500 4500.00
6 NELSON 1985-09-11 00:00:00.000 1985-09-11 1989-10-11 00:00:00.000 1989-10-11 M COBOL DBASE 2500 2500.00
7 PATTRICK 1965-11-10 00:00:00.000 1965-11-10 1990-04-21 00:00:00.000 1990-04-21 M PASCAL CLIPPER 2800 2800.00
8 QADIR 1965-08-31 00:00:00.000 1965-08-31 1991-04-21 00:00:00.000 1991-04-21 M ASSEMBLY C 3000 3000.00
9 RAMESH 1967-05-03 00:00:00.000 1967-05-03 1991-02-28 00:00:00.000 1991-02-28 M PASCAL DBASE 3200 3200.00
10 REBECCA 1967-01-01 00:00:00.000 1967-01-01 1990-12-01 00:00:00.000 1990-12-01 F BASIC COBOL 2500 2500.00
11 REMITHA 1970-04-19 00:00:00.000 1970-04-19 1993-04-20 00:00:00.000 1993-04-20 F C ASSEMBLY 3600 3600.00
12 REVATHI 1969-12-02 00:00:00.000 1969-12-02 1992-01-02 00:00:00.000 1992-01-02 F PASCAL BASIC 3700 3700.00
13 VIJAYA 1965-12-14 00:00:00.000 1965-12-14 1992-05-02 00:00:00.000 1992-05-02 F FOXPRO C 3500 3500.00
空空空空空空空空空空空空空空空空
您可以通过多种方式在 SQL Server 中进行比较。以下是其中一些。
DECLARE @table table(DOB DATETIME)
INSERT INTO @table
values ('2019-01-01 14:30:14')
SELECT * FROM @table where MONTH(DOB) = 1
SELECT * FROM @table where DATENAME(mm,dob) = 'January'
SELECT * FROM @table where DATEPART(mm,dob) = 1
如果想做类似 Oracle 的 3 个字符月
SELECT * FROM @table where LEFT(DATENAME(mm,dob),3) = 'JAN'
警告感谢@AlwaysLearning
日期名称设置为语言敏感。例如:对于一月,French=janvier; 意大利语=gennaio;德语=一月;西班牙语=埃内罗。如果你有一个 多文化数据库更喜欢使用月份或日期部分
选择姓名、出生日期 来自程序员 其中月份(出生日期)= 01