PostgreSQL - Función signo zodiacal

 
Vista:
Imágen de perfil de Lizzy
Val: 1
Ha aumentado su posición en 13 puestos en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Función signo zodiacal

Publicado por Lizzy (1 intervención) el 23/09/2018 11:03:07
Buenos días
Tengo problemas con generar un procedimiento almacenado signo (date) -> text en Postgres dada una fecha regrese el nombre del signo correspondiste , es decir algo así ,
dipl =# select signo ('2016 -09-25');

Signo
Libra
Tengo idea de hacerlos con if .
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Pancho
Val: 256
Oro
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Función signo zodiacal

Publicado por Pancho (110 intervenciones) el 14/03/2019 23:05:24
Hola

Puedes hacerlo asi tambien

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
CREATE OR REPLACE FUNCTION signo(mi_fecha date)
	RETURNS varchar
AS $$
DECLARE
	mi_signo varchar;
BEGIN
	WITH zodiaco AS (
		SELECT
			(EXTRACT(YEAR FROM NOW())-1 || '-' || 12 || '-' || 22)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 1 || '-' || 19)::date fecha_max,
			  'Capricornio' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 1 || '-' || 20)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 2 || '-' || 19)::date fecha_max,
			  'Acuario' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 2 || '-' || 20)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 3 || '-' || 20)::date fecha_max,
			  'Piscis' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 3 || '-' || 21)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 4 || '-' || 20)::date fecha_max,
			  'Aries' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 4 || '-' || 21)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 5 || '-' || 20)::date fecha_max,
			  'Tauro' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 5 || '-' || 21)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 6 || '-' || 21)::date fecha_max,
			  'Geminis' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 6 || '-' || 22)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 7 || '-' || 22)::date fecha_max,
			  'Gancer' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 7 || '-' || 23)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 8 || '-' || 23)::date fecha_max,
			  'Leo' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 8 || '-' || 24)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 9 || '-' || 23)::date fecha_max,
			  'Virgo' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 9 || '-' || 24)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 10 || '-' || 22)::date fecha_max,
			  'Libra' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 10 || '-' || 23)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 11 || '-' || 22)::date fecha_max,
			  'Escorpio' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 11 || '-' || 23)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW()) || '-' || 12 || '-' || 21)::date fecha_max,
			  'Sagitario' signo
		UNION ALL
		SELECT
			(EXTRACT(YEAR FROM NOW()) || '-' || 12 || '-' || 22)::date fecha_min,
			 (EXTRACT(YEAR FROM NOW())+1 || '-' || 1 || '-' || 19)::date fecha_max,
			  'Capricornio' signo
	)
	SELECT signo INTO mi_signo FROM zodiaco WHERE mi_fecha BETWEEN fecha_min AND fecha_max;
	RETURN mi_signo;
END $$
LANGUAGE plpgsql;
 
 
SELECT signo(now()::date);

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar