我在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''
答案 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