是否可以在不进行硬编码的情况下从sql server中的日期名称获取星期几? 像这样的东西
select DatePart(xx, 'Monday')
result: 1
答案 0 :(得分:2)
您可以像这样获取日期对象的天数:
SELECT DATEPART(WEEKDAY, GETDATE())
“星期一”中没有足够的信息来让SQL推断日期;您只是在那时将文本转换为数字。但是,如果必须的话,至少要编写一个可以重用的函数:
CREATE FUNCTION dbo.DayNameToDayNumber(@DayName VARCHAR(10))
RETURNS SMALLINT
AS
BEGIN
RETURN CASE @DayName
WHEN 'Sunday' THEN 1
WHEN 'Monday' THEN 2
WHEN 'Tuesday' THEN 3
WHEN 'Wednesday' THEN 4
WHEN 'Thursday' THEN 5
WHEN 'Friday' THEN 6
WHEN 'Saturday' THEN 7
ELSE NULL
END
END
GO
答案 1 :(得分:1)
有一个名为DAYOFWEEK的函数,该函数旨在返回与传递的日期相对应的天数。其格式为:
select {fn DAYOFWEEK(getdate())}
答案 2 :(得分:0)
如果您正在寻找独立于DATEFIRST
和语言的解决方案
; WITH
week_day AS
(
SELECT date_part = datepart(weekday, datecol), date_name = datename(weekday, datecol)
FROM (
VALUES
(GETDATE()), (GETDATE() + 1), (GETDATE() + 2),
(GETDATE() + 3), (GETDATE() + 4), (GETDATE() + 5), (GETDATE() + 6)
) v (datecol)
)
SELECT *
FROM week_day
where date_name = 'Tuesday'
答案 3 :(得分:0)
我通过谷歌搜索找到了以下示例。
declare @m varchar
set @m=0
SELECT DATENAME(DW,CAST(@m AS INT))
How do you print the day name given a day number in SQL Server 2005 using SQL commands?