В Вычисление Рабочих дней можно найти хорошую статью об этом предмете, но как Вы видите не то, чтобы усовершенствованный.
--Changing current database to the Master database allows function to be shared by everyone.
USE MASTER
GO
--If the function already exists, drop it.
IF EXISTS
(
SELECT *
FROM dbo.SYSOBJECTS
WHERE ID = OBJECT_ID(N'[dbo].[fn_WorkDays]')
AND XType IN (N'FN', N'IF', N'TF')
)
DROP FUNCTION [dbo].[fn_WorkDays]
GO
CREATE FUNCTION dbo.fn_WorkDays
--Presets
--Define the input parameters (OK if reversed by mistake).
(
@StartDate DATETIME,
@EndDate DATETIME = NULL --@EndDate replaced by @StartDate when DEFAULTed
)
--Define the output data type.
RETURNS INT
AS
--Calculate the RETURN of the function.
BEGIN
--Declare local variables
--Temporarily holds @EndDate during date reversal.
DECLARE @Swap DATETIME
--If the Start Date is null, return a NULL and exit.
IF @StartDate IS NULL
RETURN NULL
--If the End Date is null, populate with Start Date value so will have two dates (required by DATEDIFF below).
IF @EndDate IS NULL
SELECT @EndDate = @StartDate
--Strip the time element from both dates (just to be safe) by converting to whole days and back to a date.
--Usually faster than CONVERT.
--0 is a date (01/01/1900 00:00:00.000)
SELECT @StartDate = DATEADD(dd,DATEDIFF(dd,0,@StartDate), 0),
@EndDate = DATEADD(dd,DATEDIFF(dd,0,@EndDate) , 0)
--If the inputs are in the wrong order, reverse them.
IF @StartDate > @EndDate
SELECT @Swap = @EndDate,
@EndDate = @StartDate,
@StartDate = @Swap
--Calculate and return the number of workdays using the input parameters.
--This is the meat of the function.
--This is really just one formula with a couple of parts that are listed on separate lines for documentation purposes.
RETURN (
SELECT
--Start with total number of days including weekends
(DATEDIFF(dd,@StartDate, @EndDate)+1)
--Subtact 2 days for each full weekend
-(DATEDIFF(wk,@StartDate, @EndDate)*2)
--If StartDate is a Sunday, Subtract 1
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday'
THEN 1
ELSE 0
END)
--If EndDate is a Saturday, Subtract 1
-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday'
THEN 1
ELSE 0
END)
)
END
GO
, Если необходимо использовать пользовательский календарь, Вы, возможно, должны были бы добавить некоторые проверки и некоторые параметры. Надо надеяться, это обеспечит хорошую начальную точку.
Сначала сделайте очевидное: правильно ли вы ссылаетесь на файл jquery-ui.js?
Попробуйте использовать вкладку сети в firebug, чтобы узнать, загружена ли она, или javascript-код Информация \ Просмотр панели инструментов веб-разработчика.
Пробовали ли вы использовать Firebug, чтобы 1) определить, что ошибок Javascript нет и 2) что на странице существует элемент #datepicker?
Скорее всего, произошла ошибка до вызов datepicker, который предотвращает выполнение вызова datepicker.
Эта ошибка обычно появляется, когда вам не хватает файла из набора пользовательского интерфейса jQuery.
Еще раз проверьте, есть ли у вас все файлы, файлы пользовательского интерфейса jQuery, а также CSS и изображения, и что они находятся в правильно связанном месте файла / каталога на вашем сервере.
Если существует другая библиотека, использующая переменную $, вы можете сделать это:
var $j = jQuery.noConflict();
$j("#datepicker").datepicker();
Также убедитесь, что ваши javascript-файлы находятся в правильном порядке, чтобы основная библиотека jquery была определена до jquery.ui. У меня были проблемы с этой причиной.
Если вы считаете, что существует конфликт, вы можете использовать jQuery.noConflict ()
в своем коде. Подробности находятся в документах .
ССЫЛКА НА МАГИЮ - ЯРЛЫКИ ДЛЯ JQUERY
Если вам не нравится печатать полностью "jQuery" все время, есть некоторые альтернативные ярлыки:
Переназначить jQuery другому ярлыку
var $ j = jQuery;
(Это может быть лучший подход, если вы хотите использовать разные библиотеки) Используйте следующие техника, позволяющая использовать $ внутри блока кода без постоянная перезапись $:
(function($) { /* some code that uses $ */ })(jQuery)
Примечание. Если вы используете это техника, вы не сможете использовать Методы прототипа внутри этой капсулы функция, которая ожидает, что $ будет $ Prototype, так что вы делаете выбор использовать только jQuery в этом блок. Используйте аргумент DOM событие готовности:
jQuery(function($) { /*some code that uses $ */ });
Примечание: Опять же, внутри этого блока вы не можете использовать Методы прототипа
Это конец документации, он может быть вам полезен
У меня только что возникла эта проблема, и ссылки JS и код перемещены в нижнюю часть страницы перед тегом
исправил это для меня.