2014-10-30 196 views
0

我有一个SQL服务器数据库,我想从列VL_DR之间的两个给定的日期和日期是星期五。获取两个日期之间的每个星期五的数据

"SELECT VL_DR FROM table_VL WHERE date>='" + date_start 
       + "' AND date<='" + date_end 
       + "' AND DATENAME(dw, date)='Friday'" 

但在请求后,我有一个空列表,而我应该有一些值。 我应该如何解决以获得正确的请求?

+0

什么Table_VL样子,结构和样本数据 – automatic 2014-10-30 17:33:09

+0

的table_VL有一列VL_DR,列日和其他列不是有用的在这里。在VL_DR中,日期列中有数字和日期时间。 – Eagain 2014-10-31 09:29:17

回答

2

如果它的SQL Server

尝试

SELECT VL_DR FROM table_VL WHERE ([date] BETWEEN date_start and date_end) AND LOWER(DATENAME(dw, [date]))='friday'

如果它的MySQL

尝试

SELECT VL_DR FROM table_VL WHERE ([date] BETWEEN date_start and date_end) AND DAYNAME([date])='Friday'

+0

它在SQL服务器(我编辑了我的文章),但与您的请求它仍然是一个空列表时,它不应该。你有什么想法,为什么? – Eagain 2014-10-31 10:04:30

+0

@Lukasc将DATENAME(dw,[date])='Friday''更改为'LOWER(DATENAME(dw,[date]))='friday''如果您确定有服务器区分大小写是该日期范围内星期五的数据。 – Fred 2014-10-31 11:12:55

+0

我检查过日期范围内有星期五的数据,但它仍然不能用较低的功能。 – Eagain 2014-10-31 11:22:57

0

假设MySQL。 DAYNAME应该工作

"SELECT VL_DR FROM table_VL WHERE date>='" + date_start 
      + "' AND date<='" + date_end 
      + "' AND DAYNAME(date)='Friday'" 

例子:

SELECT DAYNAME('2008-05-15'); 

结果Thursday

0

此代码将工作的基础上,我有一个股票代码数据库中的数据。这是针对MS-SQL的。

SELECT 
    CloseDate, DatePart(WEEKDAY,CloseDate) AS DAY_OF_WEEK_No , SharePrice 
FROM 
    SharePrice 
WHERE 
    CloseDate BETWEEN '01 October 2014' AND '31 October 2014' 
AND 
    DATEPART(WEEKDAY,CloseDate) = 6 -- 1=Sunday; 7=Saturday 
AND 
    ShareCode = 'AGL' 
相关问题