PDA

View Full Version : تاريخ



rahil_2008
شنبه 21 شهریور 1388, 15:22 عصر
سلام دوستان
مي خواستم ببينم كسي مي دونه چطور مي شه در sql ستون تاريخ را به اين صورت در آورد؟ xx/xx/xx
يعني بجاي نوع date/time براي ستون تاريخ اونو از نوع nvarchar تعريف كنيم و بعد كاري كنيم كه / / در اين ستون موقع مقداردهي بطور پيش فرض قرار بگيره

بهنام بهمنی
یک شنبه 22 شهریور 1388, 12:36 عصر
از تابع زير براي فرمت دهي تاريخ استفاده کنيد.




CREATE FUNCTION [dbo].[FormatDateTime]
(
@dt DATETIME,
@format VARCHAR(16)
)
RETURNS VARCHAR(64)
AS
BEGIN
DECLARE @dtVC VARCHAR(64)
SELECT @dtVC = CASE @format

WHEN 'LONGDATE' THEN

DATENAME(dw, @dt)
+ ',' + SPACE(1) + DATENAME(m, @dt)
+ SPACE(1) + CAST(DAY(@dt) AS VARCHAR(2))
+ ',' + SPACE(1) + CAST(YEAR(@dt) AS CHAR(4))

WHEN 'LONGDATEANDTIME' THEN

DATENAME(dw, @dt)
+ ',' + SPACE(1) + DATENAME(m, @dt)
+ SPACE(1) + CAST(DAY(@dt) AS VARCHAR(2))
+ ',' + SPACE(1) + CAST(YEAR(@dt) AS CHAR(4))
+ SPACE(1) + RIGHT(CONVERT(CHAR(20),
@dt - CONVERT(DATETIME, CONVERT(CHAR(8),
@dt, 112)), 22), 11)

WHEN 'SHORTDATE' THEN

LEFT(CONVERT(CHAR(19), @dt, 0), 11)

WHEN 'SHORTDATEANDTIME' THEN

REPLACE(REPLACE(CONVERT(CHAR(19), @dt, 0),
'AM', ' AM'), 'PM', ' PM')

WHEN 'UNIXTIMESTAMP' THEN

CAST(DATEDIFF(SECOND, '19700101', @dt)
AS VARCHAR(64))

WHEN 'YYYYMMDD' THEN

CONVERT(CHAR(8), @dt, 112)

WHEN 'YYYY-MM-DD' THEN

CONVERT(CHAR(10), @dt, 23)

WHEN 'YYYY/MM/DD' THEN
REPLACE(CONVERT(CHAR(10), @dt, 23), '-', '/')
WHEN 'YYMMDD' THEN

CONVERT(VARCHAR(8), @dt, 12)

WHEN 'YY-MM-DD' THEN

STUFF(STUFF(CONVERT(VARCHAR(8), @dt, 12),
5, 0, '-'), 3, 0, '-')

WHEN 'MMDDYY' THEN

REPLACE(CONVERT(CHAR(8), @dt, 10), '-', SPACE(0))

WHEN 'MM-DD-YY' THEN

CONVERT(CHAR(8), @dt, 10)

WHEN 'MM/DD/YY' THEN

CONVERT(CHAR(8), @dt, 1)

WHEN 'MM/DD/YYYY' THEN

CONVERT(CHAR(10), @dt, 101)

WHEN 'DDMMYY' THEN

REPLACE(CONVERT(CHAR(8), @dt, 3), '/', SPACE(0))

WHEN 'DD-MM-YY' THEN

REPLACE(CONVERT(CHAR(8), @dt, 3), '/', '-')

WHEN 'DD/MM/YY' THEN

CONVERT(CHAR(8), @dt, 3)

WHEN 'DD/MM/YYYY' THEN

CONVERT(CHAR(10), @dt, 103)

WHEN 'HH:MM:SS 24' THEN

CONVERT(CHAR(8), @dt, 8)

WHEN 'HH:MM 24' THEN

LEFT(CONVERT(VARCHAR(8), @dt, 8), 5)

WHEN 'HH:MM:SS 12' THEN

LTRIM(RIGHT(CONVERT(VARCHAR(20), @dt, 22), 11))

WHEN 'HH:MM 12' THEN

LTRIM(SUBSTRING(CONVERT(
VARCHAR(20), @dt, 22), 10, 5)
+ RIGHT(CONVERT(VARCHAR(20), @dt, 22), 3))

ELSE

'Invalid format specified'

END
RETURN @dtVC
END

fiend_net
چهارشنبه 25 شهریور 1388, 10:19 صبح
ميشه بگيد از اين تابع چطور ميشه استفاده كرد؟
منظورم اينه كه بايد تو Sp استفاده كنيم يا جاي ديگه؟
اگه ميشه يه مثال از استفادش بزنيد! (منظورم كدشه)

ممنون

بهنام بهمنی
چهارشنبه 25 شهریور 1388, 15:54 عصر
پس از اجراي Query فوق که تابع را ايجاد کرد , به صورت زير مي توان استفاده کرد:



select dbo.FormatDateTime(GETDATE(),'yyyy/mm/dd')
select dbo.FormatDateTime(GETDATE(),'dd/mm/yyyy')


که خروجي هاي زير را مي دهد

2009/09/16
16/09/2009