Inicio > Curso básico de SQL Server 2008 > Funciones – Sql Server 2008

Funciones – Sql Server 2008


— Verificamos que no exista la DB Funciones para crearla
— si existiera la eliminamos
USE Master
GO
IF
EXISTS (SELECT NAME FROM sys.databases
           WHERE name = ‘Funciones’)
  BEGIN
    DROP DATABASE
Funciones
  END

CREATE DATABASE Funciones
GO

USE Funciones
GO
IF OBJECT_ID (N’dbo.ISOweek’, N’FN’) IS NOT NULL
    DROP FUNCTION dbo.ISOweek;
GO

CREATE FUNCTION dbo.ISOSemana (@DATE datetime)
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
     DECLARE
@ISOSemana int;
     SET @ISOSemana= DATEPART(wk,@DATE)+1-DATEPART(wk,CAST(DATEPART(yy,@DATE) AS CHAR(4))+’0104′);
  — Caso especial : Enero 1-3 pueden pertenecer al año anterior
     IF (@ISOSemana=0)
          SET @ISOSemana=dbo.ISOSemana(CAST(DATEPART(yy,@DATE)-1
               AS CHAR(4))+’12’+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1;
  — Caso especial : Diciembre 29 a 31 podrán pertenecer a la del año que viene
     IF ((DATEPART(mm,@DATE)=12) AND
          ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
          SET @ISOSemana=1;
     RETURN(@ISOSemana);
END;
GO

— SET DATEFIRST : Establece el primer día de la semana en un número del 1 al 7
SET DATEFIRST 1;

— Mostrar la función creada
SELECT dbo.ISOSemana(CONVERT(DATETIME,’05/16/2010′,101)) AS ‘ISO Semana’

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: