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))