PDA

View Full Version : جمع كردن مقادير يك ستون از نوع datetime در sql



soniarose
دوشنبه 27 آبان 1387, 18:52 عصر
سلام يك سوال در مورد vb.net داشتم ميخواستم ببينم چه طوري ميتونم مقادير يك ستون در بانك اطلاعاتي sql رو كه از نوع datetime هست رو با هم جمع و مقدار اونو از يك ستون ديگه كه از نوع datetime است كم كنم خواهش ميكنم اگه كسي ميدونه كمكم كنه چون براي پايان ناممه خيلي لازمش دارم ممنون:گریه:

reza1944
دوشنبه 27 آبان 1387, 19:50 عصر
چطوري تاريخ جمع يا تفريق بشه مثلا :
سال 86+87=!!!!!!!

اگه اختلاف بين دو تاريخ رو مي فرمايد قضيه چيز ديگري است !
تابع DateDiff

مثال :

Microsoft.VisualBasic.DateAndTime.DateDiff(DateInt erval.Day, New Date(1386, 1, 1), New Date(1387, 1, 1), FirstDayOfWeek.Friday, FirstWeekOfYear.FirstFullWeek

soniarose
سه شنبه 28 آبان 1387, 13:19 عصر
من دو تا ستون در sql دارم كه داده هاش از نوع ساعتند مثلا 2:30 كه مخوام يك ستون باهم جمع و از ستون ديگه كم كنم اين تابع شما اين كارو انجام ميده؟

soniarose
جمعه 01 آذر 1387, 18:26 عصر
كسي ميدونه چطوري ميتونم از تابع Timevalue(time) l براي جمع و تفريق زمان ها استفاده كنم

kamarikan
پنج شنبه 07 آذر 1387, 13:51 عصر
برای این کار این مطلب رو بخون
http://hajloo.wordpress.com/2008/11/27/sql-server-datetime-type-and-datediff-command/

همچنین تابع زیر هم بخوبی جواب میده



Code Snippet
CREATE FUNCTION dbo.TimeDiffInHoursAndMinutes
(
@Firstdate DATETIME,
@Seconddate DATETIME
)
/*
Function written by Jens K. Suessmeyer, 07/22/2007
http://www.sqlserver2005.de (http://www.sqlserver2005.de/)
*/
RETURNS VARCHAR(10)
AS
BEGIN
DECLARE @FirstdateMinutes INT
DECLARE @SeconddateMinutes INT
SELECT @FirstdateMinutes = DATEPART (hh,@Firstdate)*60 + DATEPART(mi,@Firstdate)
SELECT @SeconddateMinutes = DATEPART (hh,@Seconddate)*60 + DATEPART(mi,@Seconddate)
RETURN (
SELECT
CONVERT(VARCHAR(10), FLOOR(@SeconddateMinutes-@FirstdateMinutes) / 60) +
':' +
RIGHT('00' + CONVERT(VARCHAR(10), (@SeconddateMinutes-@FirstdateMinutes) - FLOOR((@SeconddateMinutes-@FirstdateMinutes) / 60)*60),2))
END;




Jens K. Suessmeyer




نحوه استفاده هم به این شکله ( یک نمونه )


Code Snippet
---------------------------------------------------------------------
DECLARE @MyTable table
( RowID int IDENTITY,
TravelTime smalldatetime
)

INSERT INTO @MyTable VALUES ( '01/02/2007 01:00:00PM' )
INSERT INTO @MyTable VALUES ( '01/03/2007 01:45:00PM' )
INSERT INTO @MyTable VALUES ( '01/04/2007 03:00:00PM' )
INSERT INTO @MyTable VALUES ( '01/04/2007 01:45:00PM' )

SELECT
Hours = sum( cast( parsename( replace( left( right( convert( varchar(20), TravelTime, 100 ), 7 ), 5 ), ':', '.' ), 2 ) AS int )) +
( sum( cast( parsename( replace( left( right( convert( varchar(20), TravelTime, 100 ), 7 ), 5 ), ':', '.' ), 1 ) AS int )) / 60 ) ,
Mins = ( sum( cast( parsename( replace( left( right( convert( varchar(20), TravelTime, 100 ), 7 ), 5 ), ':', '.' ), 1 ) AS int )) % 60 )
FROM @MyTable
-----------------------------------------------------------------------
Hours Mins
----------- -----------
7 30

sara_B
یک شنبه 17 آذر 1387, 14:49 عصر
ببخشيد كسي مي تونه مطالب كاربر محترم :kamarikan را به C# برگردونه ؟
متشكرم