2013-06-04 58 views
1
INSERT INTO `empleado` VALUES ('100', 'Alfonso', '1999-11-22', '100', '11'); 
INSERT INTO `empleado` VALUES ('101', 'Encarna', '2001-11-12', '100', '15'); 
INSERT INTO `empleado` VALUES ('102', 'Paco', '1999-10-16', '101', '12'); 
INSERT INTO `empleado` VALUES ('103', 'Juan Carlos', '1999-01-12', '101', '10'); 

這是我的日期類型,我需要選擇一些代碼,在1999年SQL查詢第三屆日期

"select nombre,coddep,fecha_ingreso from 
empleado where fecha_ingreso >1999;" 

- 即是我的初始查詢的第三屆鑽進了公司,但它是錯的因爲它選擇namecoddatetime >1999

+0

你指的是1999年的第三季度,隨着一月至三月是第一季度? – shahkalpesh

+0

是的,一月四月將是第一屆 – florin

+0

一月至四月?那是4個月,一個季度只有3個月。 – Barmar

回答

1

這將在第三季度獲取1999年的行:

SELECT nombre, coddep, fecha_ingreso 
FROM empleado 
WHERE fecha_ingreso BETWEEN '1999-07-01' AND '1999-09-30' 

如果該字段是DATETIME,而不是DATE,更改第二個日期1999-09-30 12:59:59

+0

它的工作,非常感謝!我只是做了一些改變,因爲我需要第三屆「選擇nombre,coddep,fecha_ingreso 從empleado 哪裏fecha_ingreso BETWEEN'1999-08-01'和'1999-12-30'」 – florin

+0

我更喜歡這個答案使用'YEAR(Date)'和'QUARTER(Date)',因爲它可以利用日期列上的索引,但這隻適用於'DATE'列而不是'DATETIME',日期爲1999例如「-09-30 15:00」將被忽略。我傾向於使用'>'1999-07-01'AND Fecha_ingreso <'1999-10-01''。 Aaron Bertrand討論了他不喜歡在日期中使用BETWEEN [這裏](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in -common.aspx),我傾向於同意他的觀點。 – GarethD

1
SELECT nombre, coddep, fecha_ingreso 
    FROM empleado 
    WHERE YEAR(fecha_ingreso) = 1999 AND QUARTER(fecha_ingreso) = 3 
;