Примечание: Комбинация года, месяц, неделя Номер не даст вам имя дня, потому что неделя содержит более чем на один день, так как вы можете найти какой день это? это не возможно
пример:year 2015 month 06 week number 1
то есть сочетание
1 monday
2 tuesday
3 wednesday
4 thursday
5 friday
6 saturday
затем с этими результатами, как вы можете predit точный день ??
Else нужны условия или ограничения
Если у вас есть год, месяц и дата, то вы можете найти название дня, используя приведенный ниже запрос будет давать начальную и конечную дату недели, то вы можете взять даты с даты начала и заканчивается датой окончания
SELECT (
DATENAME(dw,
CAST(DATEPART(m, GETDATE()) AS VARCHAR)
+ '/'
+ CAST(DATEPART(d, '2015-06-23') AS VARCHAR)
+ '/'
+ CAST(DATEPART(yy, getdate()) AS VARCHAR))
)
Update
Если вам нужны все дни между текущей недели, используйте следующий запрос
DECLARE
@Year INT,
@Week INT,
@FirstDayOfYear DATETIME,
@FirstMondayOfYear DATETIME,
@StartDate DATETIME,
@EndDate DATETIME
SET @Year = 2015
SET @Week = 24// week number is based on year and it is not based on month
-- Get the first day of the provided year.
SET @FirstDayOfYear = CAST('1/1/' + CAST(@YEAR AS VARCHAR) AS DATETIME)
-- Get the first monday of the year, then add the number of weeks.
SET @FirstMondayOfYear = DATEADD(WEEK, DATEDIFF(WEEK, 0, DATEADD(DAY, 6 - DATEPART(DAY, @FirstDayOfYear), @FirstDayOfYear)), 0)
SET @StartDate = DATEADD(WEEK, @Week - 1, @FirstMondayOfYear)
-- Set the end date to one week past the start date.
SET @EndDate = DATEADD(WEEK, 1, @StartDate)
SELECT @StartDate AS StartDate, DATEADD(SECOND, -1, @EndDate) AS EndDate
Update
, если не год число недель, то используйте приведенные ниже запрос,
DATEPART(WEEK,'2015-06-01')
Этот запрос является одним из примеров
В запросе есть два значения то есть Year
и Month
вам нужно только третье значение, которое означает дату
как метод, вы можете дать 01 в качестве даты, то это даст начиная номер недели выбранный месяц
здесь это приведет к 23 так что у вас есть идея в 2015 - месяц 06 начинается с недели номер 23, так что вы можете легко делать свои вещи
Идея: если номер вашей недели равен 1, тогда возьмите 23 недели, если это 2, а затем 24, как мудрый ..
, пожалуйста, покажите образец некоторых дат и желаемых результатов, как из того, что вы сказали, я не могу понять, как определить день месяца, если у вас есть только неделя, так как это будет 1 из 7 дней ? какую логику вы собираетесь использовать, чтобы сузить это? ты просто хочешь первый день? – Tanner
Комбинированный год + месяц + число недель в месяц не даст вам дня. Это даст вам целых семь дней на этой неделе. –
мой запрос следующий: SELECT TOP [YR], [MonthNum], [WeekOfMonth], [sun], [mo], [tu], [we], [th], [fr], [sa] FROM [ vwBookingsForMonth] , поэтому есть одна строка за каждую неделю месяца. Если я укажу дату, данные будут соединены несколько раз. Я пытаюсь заполнить контрольный элемент управления заказами на месяц в очень компактном формате, чтобы его можно было легко распечатать. Я собираюсь попробовать @ arunprasanth1111 предложение, и я дам вам знать. – KellyK