从日期字段 - HQL中提取星期几(即“星期六”)

时间:2014-11-14 18:41:11

标签: sql date hql extraction

我在hive表中有一个日期字段,格式如下:

'YYYY-MM-DD'

我正在寻找一个功能(让我们称这个尚未被我发现的功能 dayofweek())将返回' friday '在今天的日期运行。所以,明确地说,这个查询:

SELECT DAYOFWEEK(DT.ds), DT.ds
FROM dateTable DT
WHERE DT.ds = '2014-11-14'
LIMIT 1

将返回此值:

'friday'   '2014-11-14'

任何帮助都将非常感激:) google搜索尚未成功。

克拉克

P.S。对this question的回复对我不起作用...错误返回:'Invalid function 'dayofweek''

2 个答案:

答案 0 :(得分:0)

如果您需要关注等式,以下是C代码,希望简单到足以转换为SQL。

使用整数数学很重要。

#define MARCH 3
int dow_Sunday0(int year, int month, int day) {
  if (month < MARCH) {
    month += 12;
    year--;
  }
  // Add days for each year and leap years 
  day += year + year/4 - year/100 + year/400;
  // add days for the month
  day += month*30 + ((month-MARCH)*39 + 25)/64;
  // modulo 7
  return (day+3)%7;
}

这适用于有效的Gregorian calendar日期。

答案 1 :(得分:0)

使用DAYNAME()功能,如下所示:

mysql> select dayname('2014-11-14');
+-----------------------+
| dayname('2014-11-14') |
+-----------------------+
| Friday                |
+-----------------------+
1 row in set (0.00 sec)

因此,您的查询将变为:

SELECT DAYNAME(DT.ds), DT.ds
FROM dateTable DT
WHERE DT.ds = '2014-11-14'
LIMIT 1