una semana primer obtener nombre name mes fecha español day datepart sql sql-server datetime

primer - sql dia de la semana español



Obtener día de la semana en SQL 2005/2008 (9)

A pesar de que la respuesta de SQLMenace ha sido aceptada, hay una opción SET importante que debe tener en cuenta

SET DATEFIRST

DATENAME devolverá el nombre de la fecha correcta pero no el mismo valor DATEPART si el primer día de la semana se cambió como se muestra a continuación.

declare @DefaultDateFirst int set @DefaultDateFirst = @@datefirst --; 7 First day of week is "Sunday" by default select [@DefaultDateFirst] = @DefaultDateFirst set datefirst @DefaultDateFirst select datename(dw,getdate()) -- Saturday select datepart(dw,getdate()) -- 7 --; Set the first day of week to * TUESDAY * --; (some people start their week on Tuesdays...) set datefirst 2 select datename(dw,getdate()) -- Saturday --; Returns 5 because Saturday is the 5th day since Tuesday. --; Tue 1, Wed 2, Th 3, Fri 4, Sat 5 select datepart(dw,getdate()) -- 5 <-- It''s not 7! set datefirst @DefaultDateFirst

Si tengo una fecha 01/01/2009, quiero saber qué día fue, por ejemplo, lunes, martes, etc.

¿Hay una función incorporada para esto en SQL 2005/2008? ¿O necesito usar una mesa auxiliar?


Con SQL Server 2012 y en adelante puede usar la función FORMAT

SELECT FORMAT(GETDATE(), ''dddd'')


EUROPA:

declare @d datetime; set @d=getdate(); set @dow=((datepart(dw,@d) + @@DATEFIRST-2) % 7+1);


Para obtener un valor determinista para el día de la semana para una fecha determinada, puede utilizar una combinación de DATEPART() y @@datefirst . De lo contrario, depende de la configuración del servidor.

Visite el siguiente sitio para encontrar una mejor solución: MS SQL: Día de la semana

El día de la semana estará en el rango de 0 a 6, donde 0 es domingo, 1 es lunes, etc. Luego puede usar una declaración de caso simple para devolver el nombre de día de la semana correcto.


Puede encontrar esta versión útil.

-- Test DATA select @@datefirst create table #test (datum datetime) insert #test values (''2013-01-01'') insert #test values (''2013-01-02'') insert #test values (''2013-01-03'') insert #test values (''2013-01-04'') insert #test values (''2013-01-05'') insert #test values (''2013-01-06'') insert #test values (''2013-01-07'') insert #test values (''2013-01-08'') -- Test DATA select Substring(''Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun,Mon,Tue,Wed,Thu,Fri,Sat'', (DATEPART(WEEKDAY,datum)+@@datefirst-1)*4+1,3),Datum from #test


Si no desea depender de @@DATEFIRST o usar DATEPART(weekday, DateColumn) , solo calcule el día de la semana.

Para las semanas basadas en el lunes (Europa), el más simple es:

SELECT DATEDIFF(day, ''17530101'', DateColumn) % 7 + 1 AS MondayBasedDay

Para las semanas basadas en el domingo (América) use:

SELECT DATEDIFF(day, ''17530107'', DateColumn) % 7 + 1 AS SundayBasedDay

Esto devuelve el número del día de la semana (1 a 7) desde el 1 de enero, respectivamente, el 7, 1753.


esta es una copia de trabajo de mi código, compruébelo, cómo recuperar el nombre del día desde la fecha en sql

CREATE Procedure [dbo].[proc_GetProjectDeploymentTimeSheetData] @FromDate date, @ToDate date As Begin select p.ProjectName + '' ( '' + st.Time +'' ''+''-''+'' ''+et.Time +'' )'' as ProjectDeatils, datename(dw,pts.StartDate) as ''Day'' from ProjectTimeSheet pts join Projects p on pts.ProjectID=p.ID join Timing st on pts.StartTimingId=st.Id join Timing et on pts.EndTimingId=et.Id where pts.StartDate >= @FromDate and pts.StartDate <= @ToDate END

Feliz codificación ....


Utilice DATENAME o DATEPART :

SELECT DATENAME(dw,GETDATE()) -- Friday SELECT DATEPART(dw,GETDATE()) -- 6


SELECT CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN ''SUNDAY'' WHEN 2 THEN ''MONDAY'' WHEN 3 THEN ''TUESDAY'' WHEN 4 THEN ''WEDNESDAY'' WHEN 5 THEN ''THURSDAY'' WHEN 6 THEN ''FRIDAY'' WHEN 7 THEN ''SATURDAY'' END