format tanggal

24 04 2007

Sering kali suatu aplikasi database client server berhadapan dengan format tanggal, musti pake format client, server ato database? iya kalo2 format tanggal sama [dalam artian sesuai dengan dlm database n UserInterface] nah klo nggak? ampunwaaa… bisa stresss. Disini gw mo nambahin storedProcedure buat dapetin format [lebih dari 1 seeh... ]

ni dia scriptna:mikir

CREATE FUNCTION dbo.FormatDateTime(  @dt DATETIME,

@format VARCHAR(16)

)RETURNS VARCHAR(64)

ASBEGIN

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 '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

nah klo pake ini kan lebih enak, you tinggal pake n masukin format.
like this:

 

EXEC dbo.FormatDateTime(getdate(), 'DD/MM/YYYY')

sekarang, kenapa ini dikatakan lebih baik?
1. tanggal yang diambil sesuai dengan tanggal yang ada dalam database, it means we are not using local date neither local server date, but database date. Ini yang akan memaintain sinkronisasi antara tanggal client server.
2. “getdate()” dapat diganti dengan tanggal dari inputan user.

sctript ini gw dapet dari internet, gw lupa ngambilnya dimana… th_013 anyway, thanks buat yang dah bikin script ini.. :P


Actions

Information

2 responses

30 04 2009
ricoh sanusi

maturnuwun, mas..

17 09 2009
vas

sql server pas projek sisindokom ya ndod?

Leave a comment