una sacar saber obtener mes insertar hoy fecha actual sql sql-server function date

sacar - Obtener el nombre del día de la semana desde una fecha determinada en SQL Server



sacar fecha sql server (6)

Estoy tratando de obtener un nombre de día como viernes, sábado, domingo, lunes, etc. de una fecha determinada. Sé que hay una función incorporada que devuelve el nombre del día, por ejemplo:

SELECT DATENAME(dw,''09/23/2013'') as theDayName

esta consulta SQL devuelve:

''Lunes''

Esto está todo bien. Pero me gustaría pasar Month, Day and Year individualmente.

Estoy usando la función DATEPART incorporada para recuperar el mes, el día y el año de una fecha para poder pasarla a la función DATENAME:

SELECT DATEPART(m, GETDATE()) as theMonth -- returns 11 SELECT DATEPART(d, GETDATE()) as theDay -- returns 20 SELECT DATEPART(yy, GETDATE()) as theYear -- returns 2013

Ahora que tengo los valores de Mes, Día, Año individualmente, los paso a mi DATENAME para obtener el Weekname de la fecha que deseo:

--my SQL query to return dayName SELECT (DATENAME(dw, DATEPART(m, GETDATE())/DATEPART(d, myDateCol1)/ DATEPART(yy, getdate()))) as myNameOfDay, FirstName, LastName FROM myTable

Esto devuelve un nombre de día incorrecto. Intenté reemplazar / con - para que en la función DATENAME mi consulta SQL se convierta en:

SELECT DATENAME(dw,''09/23/2013'') --becomes SELECT DATENAME(dw,''09-23-2013'')

pero aún devuelve dayName incorrecto de mi consulta SQL. Me estoy perdiendo de algo.

Por favor avise.


Necesita construir una cadena de fecha. Está utilizando / o - operadores que realizan operaciones MATH / numéricas en los valores de retorno numéricos de DATEPART. Entonces DATENAME está tomando ese valor numérico e interpretándolo como una fecha.

Necesitas convertirlo a una cadena. Por ejemplo:

SELECT ( DATENAME(dw, CAST(DATEPART(m, GETDATE()) AS VARCHAR) + ''/'' + CAST(DATEPART(d, myDateCol1) AS VARCHAR) + ''/'' + CAST(DATEPART(yy, getdate()) AS VARCHAR)) )


Probado y funciona en SQL 2005 y 2008. No estoy seguro para 2012. La solución usa DATENAME en lugar de DATEPART

select datename(dw,getdate()) --Thursday select datepart(dw,getdate()) --2


Pruebe de esta manera: seleccione DATENAME (DW, GETDATE ())


Si tiene SQL Server 2012:

Si sus partes de fecha son números enteros, entonces puede usar la función DATEFROMPARTS .

SELECT DATENAME( dw, DATEFROMPARTS( @Year, @Month, @Day ) )

Si sus partes de fecha son cadenas, puede usar la función CONCAT .

SELECT DATENAME( dw, CONVERT( date, CONCAT( @Day, ''/'' , @Month, ''/'', @Year ), 103 ) )


solía

select case when (extract (weekday from DATE)=0) then ''Sunday''

y así...

0 domingo, 1 lunes ...


SELECT DATENAME(DW,CONVERT(VARCHAR(20),GETDATE(),101))