Детерминированная скалярная функция для получения дня недели для даты

Я рекомендовал бы также наблюдать некоторые экранные демонстрации - они обычно создаются в контексте определенной технологии не язык, хотя, если будет отображенный код Python, это сделает:). Точка - они создаются некоторыми хорошими программистами и смотрящий, как хорошая программа программистов является хорошей вещью. Вы и Ваш брат могли сделать некоторый одноранговый узел, программирующий также, который мог бы быть еще лучшей идеей. Просто не забывайте объяснять, ПОЧЕМУ Вы делаете что-то этот путь и не тот путь. Я думаю лучший способ узнать, что программирование от хороших примеров, и попытайтесь даже не видеть плохие.

5
задан Dve 26 November 2009 в 13:16
поделиться

5 ответов

Хорошо, я понял ..

CREATE FUNCTION [dbo].[FN_DayNumeric_DateTime] 
(@DT DateTime)
RETURNS INT WITH SCHEMABINDING
AS 
BEGIN
DECLARE @Result int 
DECLARE  @FIRST_DATE        DATETIME
SELECT @FIRST_DATE = convert(DATETIME,-53690+((7+5)%7),112)
SET  @Result = datediff(dd,dateadd(dd,(datediff(dd,@FIRST_DATE,@DT)/7)*7,@FIRST_DATE), @DT)
RETURN (@Result)
END
GO
6
ответ дан 13 December 2019 в 19:28
поделиться

Для этого в sql уже есть встроенная функция:

SELECT DATEPART(weekday, '2009-11-11')

РЕДАКТИРОВАТЬ : Если вам действительно нужен детерминированный UDF:

CREATE FUNCTION DayOfWeek(@myDate DATETIME ) 
RETURNS int
AS
BEGIN
RETURN DATEPART(weekday, @myDate)
END
GO
SELECT dbo.DayOfWeek('2009-11-11')

EDIT еще раз : это на самом деле неверно, поскольку DATEPART (будний день) не является детерминированным.

UPDATE : DATEPART (день недели) не является детерминированным, поскольку он основан на DATEFIRST ( источник ).
Вы можете изменить его с помощью SET DATEFIRST , но вы не можете вызвать его внутри сохраненной функции.

Я думаю, что следующим шагом будет создать вашу собственную реализацию , используя предпочитаемый вами DATEFIRST внутри него (и не считая его вообще, используя, например, понедельник как первый день).

0
ответ дан 13 December 2019 в 19:28
поделиться

Как сказали Болдевин и Бен, text-align будет центрировать встроенные элементы (например, промежутки). Для центрирования блочных элементов (таких как div, формы и абзацы) задайте ширину и установите для полей margin-right и margin-left значение auto.

Важно понимать разницу между блочными и встроенными элементами .

date.php

function weekday($fyear, $fmonth, $fday) //0 is monday
{
  return (((mktime ( 0, 0, 0, $fmonth, $fday, $fyear) - mktime ( 0, 0, 0, 7, 17,   2006))/(60*60*24))+700000) % 7;
}
-1
ответ дан 13 December 2019 в 19:28
поделиться

Разве вы не можете просто выбрать его с помощью чего-то вроде:

SELECT DATENAME(dw, GETDATE());
-1
ответ дан 13 December 2019 в 19:28
поделиться

День недели? Почему бы вам просто не использовать DATEPART?

DATEPART(weekday, YEAR_DATE)
-1
ответ дан 13 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: