SQL日期通配符

时间:2014-07-28 10:13:23

标签: mysql sql sql-server

我正在使用sql编写一个查询,其中我试图选择具有满足以下条件的date_from列(类型为日期/时间)的记录:

  • 可以是任何一年
  • 月份是六月,七月,八月和九月
  • 如果是六月,那应该从六月十五日开始考虑

这是我尝试过的......

Select name, surname
FROM employees emp
where month(emp.date_from) IN ('06' , '07' , '08', '09')

我也尝试过使用CASE但失败了。有什么帮助吗?

3 个答案:

答案 0 :(得分:3)

WHERE MONTH(emp.date_from) IN (7,8,9)
   OR (MONTH(emp.date_from) = 6 AND DAY(emp.date_from) >= 15);

<强>更新

或者在MySQL

中将日期视为字符串
WHERE RIGHT(emp.date_from, 5) BETWEEN '06-15' AND '09-30';

我不知道哪个会表现得更好。

答案 1 :(得分:0)

Sqlserver 2012

SELECT 
  * 
FROM
  employees
WHERE 
  DateFromParts(2000,month(date_from),day(date_from))
    between '2000-06-15' and '2000-09-30'

选择2000年是因为它是闰年,将在2000-02-29左右处理闰年问题。

答案 2 :(得分:-1)

SELECT firstname, 
       lastname, 
       dateofbirth 
FROM   patient 
WHERE  Day(dateofbirth) >= CASE 
                             WHEN Month(dateofbirth) = '06' THEN 15 
                           END 
        OR Month(dateofbirth) IN ( '07', '08', '09' ) 
ORDER  BY Month(dateofbirth)