cari
Rumahpangkalan datatutorial mysqlhive返回星期几的方法

hive返回星期几的方法

Jun 07, 2016 pm 04:13 PM
hiveOrang aslikaedahMingguTahukembali

熟悉hive的人都知道,在原生版本中,目前并没有返回星期几的函数。为了解决这个问题,除了利用java自己编写udf外,也可以利用现有hive函数实现,笔者整理了以下内容供大家参考: hive返回星期几的方法:pmod(datediff(#date#, 2012年任意一个星期日的日期),

熟悉hive的人都知道,在原生版本中,目前并没有返回星期几的函数。为了解决这个问题,除了利用java自己编写udf外,也可以利用现有hive函数实现,笔者整理了以下内容供大家参考:

hive返回星期几的方法:pmod(datediff('#date#', '2012年任意一个星期日的日期'), 7) 。2012-01-01刚好是星期日,大家可以记忆为:
方法:pmod(datediff('#date#', '2012-01-01'), 7)  
返回值:int
说明:1、返回值为“0-6”(“0-6”分别表示“星期日-星期六”);2、需要注意pmod和 datediff 函数的使用方法.

解析:

1、datediff 是两个日期相减的函数,hive日期函数可以见附录:

日期相减函数:datediff
语法:datediff(string enddate, string startdate)
返回值: int
说明: 返回两个时间参数的相差天数。

2、 pmod 是正取余函数:

正取余函数 : pmod
语法: pmod(int a, int b),pmod(double a, double b)
返回值: int double
说明: 返回正的a除以b的余数

特殊说明:

这个方法也不是唯一的方法,只是利用了datediff 和pmod函数的特点,组合使用而出。内部牛人分享的方法也可以达到相同的目的:

pmod(datediff(#date#, '1920-01-01') - 3, 7)

附录:hive日期函数

返回类型 函数 说明
string from_unixtime(bigint unixtime[, string format]) UNIX_TIMESTAMP参数表示返回一个值’YYYY- MM – DD HH:MM:SS’或YYYYMMDDHHMMSS.uuuuuu格式,这取决于是否是在一个字符串或数字语境中使用的功能。该值表示在当前的时区。
bigint unix_timestamp() 如果不带参数的调用,返回一个Unix时间戳(从’1970- 01 – 0100:00:00′到现在的UTC秒数)为无符号整数。
bigint unix_timestamp(string date) 指定日期参数调用UNIX_TIMESTAMP(),它返回参数值’1970- 01 – 0100:00:00′到指定日期的秒数。
bigint unix_timestamp(string date, string pattern) 指定时间输入格式,返回到1970年秒数:unix_timestamp(’2009-03-20′, ‘yyyy-MM-dd’) = 1237532400 参考:http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
string to_date(string timestamp) 返回时间中的年月日: to_date(“1970-01-01 00:00:00″) = “1970-01-01″
string to_dates(string date) 给定一个日期date,返回一个天数(0年以来的天数)
int year(string date) 返回指定时间的年份,范围在1000到9999,或为”零”日期的0。
int month(string date) 返回指定时间的月份,范围为1至12月,或0一个月的一部分,如’0000-00-00′或’2008-00-00′的日期。
int day(string date) dayofmonth(date) 返回指定时间的日期
int hour(string date) 返回指定时间的小时,范围为0到23。
int minute(string date) 返回指定时间的分钟,范围为0到59。
int second(string date) 返回指定时间的秒,范围为0到59。
int weekofyear(string date) 返回指定日期所在一年中的星期号,范围为0到53。
int datediff(string enddate, string startdate) 两个时间参数的日期之差。
int date_add(string startdate, int days) 给定时间,在此基础上加上指定【本文来自鸿网互联 (http://www.68idc.cn)】的时间段。
int date_sub(string startdate, int days) 给定时间,在此基础上减去指定的时间段。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah MySQL mengendalikan replikasi data?Bagaimanakah MySQL mengendalikan replikasi data?Apr 28, 2025 am 12:25 AM

MySQL memproses replikasi data melalui tiga mod: replikasi asynchronous, semi-sinkron dan kumpulan. 1) Prestasi replikasi tak segerak tinggi tetapi data mungkin hilang. 2) Replikasi semi-sinkron meningkatkan keselamatan data tetapi meningkatkan latensi. 3) Replikasi kumpulan menyokong replikasi multi-tuan dan failover, sesuai untuk keperluan ketersediaan yang tinggi.

Bagaimanakah anda boleh menggunakan pernyataan Jelaskan untuk menganalisis prestasi pertanyaan?Bagaimanakah anda boleh menggunakan pernyataan Jelaskan untuk menganalisis prestasi pertanyaan?Apr 28, 2025 am 12:24 AM

Kenyataan Jelaskan boleh digunakan untuk menganalisis dan meningkatkan prestasi pertanyaan SQL. 1. Jalankan pernyataan Jelaskan untuk melihat pelan pertanyaan. 2. Menganalisis hasil output, perhatikan jenis akses, penggunaan indeks dan sertai pesanan. 3. Membuat atau menyesuaikan indeks berdasarkan hasil analisis, mengoptimumkan operasi gabungan, dan elakkan pengimbasan jadual penuh untuk meningkatkan kecekapan pertanyaan.

Bagaimana anda membuat sandaran dan memulihkan pangkalan data MySQL?Bagaimana anda membuat sandaran dan memulihkan pangkalan data MySQL?Apr 28, 2025 am 12:23 AM

Menggunakan mysqldump untuk sandaran logik dan mysqlenterpriseBackup untuk sandaran panas adalah cara yang berkesan untuk membuat sandaran pangkalan data MySQL. 1. Gunakan mysqldump untuk menyokong pangkalan data: mysqldump-usoot-pmydatabase> mydatabase_backup.sql. 2. Gunakan mysqlenterpriseBackup untuk sandaran panas: mysqlbackup-user = root-password = password-backup-dir =/to/to/backupbackup. Semasa pulih, gunakan kehidupan yang sepadan

Apakah sebab -sebab umum pertanyaan perlahan di MySQL?Apakah sebab -sebab umum pertanyaan perlahan di MySQL?Apr 28, 2025 am 12:18 AM

Sebab utama pertanyaan MySQL yang perlahan termasuk penggunaan indeks yang hilang atau tidak wajar, kerumitan pertanyaan, jumlah data yang berlebihan dan sumber perkakasan yang tidak mencukupi. Cadangan pengoptimuman termasuk: 1. Buat indeks yang sesuai; 2. Mengoptimumkan pernyataan pertanyaan; 3. Gunakan teknologi pembahagian meja; 4. Meningkatkan perkakasan dengan sewajarnya.

Apakah pandangan di MySQL?Apakah pandangan di MySQL?Apr 28, 2025 am 12:04 AM

Pandangan MySQL adalah jadual maya berdasarkan hasil pertanyaan SQL dan tidak menyimpan data. 1) Pandangan memudahkan pertanyaan kompleks, 2) meningkatkan keselamatan data, dan 3) mengekalkan konsistensi data. Pandangan disimpan pertanyaan dalam pangkalan data yang boleh digunakan seperti jadual, tetapi data dihasilkan secara dinamik.

Apakah perbezaan sintaks antara MySQL dan dialek SQL yang lain?Apakah perbezaan sintaks antara MySQL dan dialek SQL yang lain?Apr 27, 2025 am 12:26 AM

Mysqldiffersfromothersqldialectsyntaxforlimit, auto-increment, stringcomparison, subqueries, andperformanceanalysis.1) mySqlusSlimit, whilesqlserverestopandoracleusesusesrownum.2)

Apakah pemisahan MySQL?Apakah pemisahan MySQL?Apr 27, 2025 am 12:23 AM

Pemisahan MySQL meningkatkan prestasi dan memudahkan penyelenggaraan. 1) Bahagikan jadual besar ke dalam kepingan kecil dengan kriteria tertentu (seperti julat tarikh), 2) secara fizikal membahagikan data ke dalam fail bebas, 3) MystQL boleh memberi tumpuan kepada partisi yang berkaitan apabila pertanyaan, 4) Pengoptimal pertanyaan boleh melangkau partisi yang tidak berkaitan, 5) Memilih strategi partisi yang tepat dan mengekalkannya secara tetap adalah kunci.

Bagaimana anda memberikan dan membatalkan keistimewaan di MySQL?Bagaimana anda memberikan dan membatalkan keistimewaan di MySQL?Apr 27, 2025 am 12:21 AM

Bagaimana untuk memberikan dan membatalkan keizinan di MySQL? 1. Gunakan pernyataan geran untuk memberikan kebenaran, seperti GrantallPrivileGeSondatabase_name.to'username'@'host '; 2. Gunakan pernyataan membatalkan untuk membatalkan kebenaran, seperti RevokeAllPrivileGeSondatabase_name.from'username'@'host 'untuk memastikan komunikasi tepat pada masanya perubahan kebenaran.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod