PDA

View Full Version : Database Làm sao định dạng ngày tháng dd/mm/yyyy trong SQL Sever 2005



thuan199
08-01-2011, 02:40 PM
Mình muốn lưu ngày giờ thao tác của người dùng..nên có viết 1 function để khi người dùng thao tác gì làm thay đổi dữ liệu thì lưu vào CSDL là SQL Server 2005. Nhưng mình muốn SQL Server định dạng theo dd/mm/yyyy. Để làm được điều đó thì mình phải làm sao?
Cám ơn các bạn đã đọc và hướng dẫn.

nguyenbinh07
08-01-2011, 02:48 PM
Dùng hàm CAST('yyy-mm-dd hh:mm:ss.mmm' AS datetime)
Tùy cách định dạng ngày tháng năm. Ví dụ: CAST('2011-01-02 00:37:29.000' AS datetime)

thuan199
08-01-2011, 03:31 PM
Dùng hàm CAST('yyy-mm-dd hh:mm:ss.mmm' AS datetime)
Tùy cách định dạng ngày tháng năm. Ví dụ: CAST('2011-01-02 00:37:29.000' AS datetime)

Bạn có thể nói rõ hơn được không? Mình đã thử chạy câu lệnh SQL nhưng không ra đúng dịnh dạng mình muốn. ):)T

trungvx
08-01-2011, 04:10 PM
Mình muốn lưu ngày giờ thao tác của người dùng..nên có viết 1 function để khi người dùng thao tác gì làm thay đổi dữ liệu thì lưu vào CSDL là SQL Server 2005. Nhưng mình muốn SQL Server định dạng theo dd/mm/yyyy. Để làm được điều đó thì mình phải làm sao?
Cám ơn các bạn đã đọc và hướng dẫn.
bạn thử hàm convert xem
Syntax for CONVERT:
CONVERT (data_type [ (length ) ] ,expression [ ,style ] )
eg:
select CONVERT(varchar(20),[date],103) from test1

nh0cbilly
08-01-2011, 04:14 PM
kiểu datetime trong sql lúc nào cũng có mm/dd/yyyy hh/mm/ss hết bạn à. Theo mình biết thì ko có cách nào chỉnh được. Nếu bạn đem qua visual studio thì bạn cắt chuỗi nó rồi đem để vào textbox. Ko thì dùng datetimepicker :)

baothanh07
08-01-2011, 06:39 PM
kiểu datetime trong sql lúc nào cũng có mm/dd/yyyy hh/mm/ss hết bạn à. Theo mình biết thì ko có cách nào chỉnh được. Nếu bạn đem qua visual studio thì bạn cắt chuỗi nó rồi đem để vào textbox. Ko thì dùng datetimepicker :)
Mình nghĩ là được nếu chỉnh Region and Language của máy thì có thể nhập ngày giờ theo định dạng dd/mm/yyyy, chỉ có điều đem qua máy khác mặc định là mm/dd/yyyy nếu quên chỉnh lại thì chương trình bị lỗi.

hoanghuynh2409
08-01-2011, 08:21 PM
theo mình máy tính mật định là mm/dd/yyyy sql cũng vậy, mình thay đổi đem qua máy khác ko giống chạy ko được, mất công thiết lập này kia, tốt nhất nên để nguyên, ta sử lý trên form khi lấy dữ liệu lên rồi convert nó lại.

dot_seo
09-01-2011, 01:19 AM
mình cũng gặp phải vân đề tượng tự.

nguyenbinh07
09-01-2011, 02:00 PM
Ví dụ như muốn INSERT vào bảng T có 2 cột là A, B trong đó cột A kiểu int, cột B kiểu datetime thì querry như sau:
INSERT INTO T VALUES (1, CAST('2011-01-02 00:37:29.123' AS datetime))
Mình chưa test :D. Bạn thử xem đc ko

iloveit1208
09-01-2011, 02:50 PM
insert kiểu string vào sql cho dễ xog lấy ra rồi convert bằng C# cũng dc

thuan199
10-01-2011, 07:37 AM
theo mình máy tính mật định là mm/dd/yyyy sql cũng vậy, mình thay đổi đem qua máy khác ko giống chạy ko được, mất công thiết lập này kia, tốt nhất nên để nguyên, ta sử lý trên form khi lấy dữ liệu lên rồi convert nó lại.

Giờ máy tính của của mình định dạng là dd/mm/yyyy. Nhưng khi mình dùng hàm select getdate() nhưng SQL trả về định dạng yyyy-mm-dd hh:mm:ss

Làm sao khi truy vấn thì SQL trả về dạng ngày tháng dd/mm/yyyy?

haiht
10-01-2011, 08:29 AM
http://msdn.microsoft.com/en-us/library/ms187928.aspx
Bạn để ý cái bảng nhé, convert sang 103

trungvx
10-01-2011, 08:59 AM
Giờ máy tính của của mình định dạng là dd/mm/yyyy. Nhưng khi mình dùng hàm select getdate() nhưng SQL trả về định dạng yyyy-mm-dd hh:mm:ss

Làm sao khi truy vấn thì SQL trả về dạng ngày tháng dd/mm/yyyy?

mình có viết ví dụ ở trang 1,bạn xem qua chưa

tmhlove
10-05-2011, 01:49 PM
insert kiểu string vào sql cho dễ xog lấy ra rồi convert bằng C# cũng dc
muốn làm như bạn thì phải làm như thế nào bạn có thể cho ví dụ được không? Mình cũng đang thắc mắc về kiểu insert kiểu string xuống sql cho hàm date.
Có bác nào biết cách làm sao khi người dùng nhập vào textbox 1 kieu ngày tháng bất kì thì khi insert xuống sql vẫn theo chuẩn nhất định không? Help giúp mình vấn đề này xíu
Thanks các bác nhiều.

snake_programmer
10-05-2011, 08:12 PM
Sử dụng hàm convert trong sql kết hợp với hàm chuyển của class String trong C#.net là ok mà, có gì là không làm được đâu. Mình có project đã xử lý được điều này, mai mốt có time thì post lên cho các mem mới tham khảo.

nganstyle8x
12-05-2011, 11:09 PM
Tớ đã tham khảo trên sql thì nếu muốn chuyển định dạng ngày/tháng/năm thì mình cho thêm
câu lệnh : "Set dateformat dmy ..." chỗ ... cậu viết tiếp câu lệnh vào nhé!
Hãy thử xem nhé!

thanhtungdesigner
16-05-2011, 11:56 AM
http://msdn.microsoft.com/en-us/library/ms187928.aspx
Bạn để ý cái bảng nhé, convert sang 103

Cái lệnh đó viết ở chỗ nào trong SQL vậy bạn :)

dotritiep
16-05-2011, 12:23 PM
Theo mình cũng để mặc định giờ hệ thống và SQL là mm/dd/yyyy
Trong C# ta định dạng lại. Muốn hiển thị hay thêm sửa vào SQL đều chuyển hết sang kiểu String cho dễ
Để lưu xuống CSDL bạn ép kiểu sang String là MM/dd/yyyy
Ví dụ


DateTime Ngay = Convert.ToDateTime(txtNgay.Text);
String NgayDeLuu = Ngay.ToString("MM/dd/yyyy");


Còn muốn lấy dữ liệu từ CSDL lên để hiển thị thì ta lại ép sang kiểu dd/MM/yyyy
Ví dụ



datatable tbl = obj.getdataset("HoaDon").table[0];
datarow drw = tbl.row[0];
DateTime NgayBan = Convert.ToDateTime(drw["NgayBan"].ToString());
String NgayBan1 = NgayBan.ToString("dd/MM/yyyy");
txtNgayBan.text = NgayBan1;

Ryani2410
18-05-2011, 04:16 PM
Mình viết 1 đoạn code SQL format theo 'dd/mm/yyyy hh:mm:ss' cho bạn tham khảo nè.

DECLARE @day varchar(2),
@month varchar(2),
@year varchar(4),
@hour varchar(2),
@minute varchar(2),
@second varchar(2),
@result varchar(max)
set @day = DAY('2008-12-09 09:09:15.000')
set @month = MONTH('2008-12-09 09:09:15.000')
set @year = YEAR('2008-12-09 09:09:15.000')
set @hour = CAST(DATEPART(HOUR,'2008-12-09 09:09:15.000') AS VARCHAR(2))
set @minute = CAST(DATEPART(MINUTE,'2008-12-09 09:09:15.000') AS VARCHAR(2))
set @second = CAST(DATEPART(SECOND,'2008-12-09 09:09:15.000') AS VARCHAR(2))
IF(LEN(@day)<2)
BEGIN
set @day = '0' + @day
END

IF(LEN(@month)<2)
BEGIN
set @month = '0' + @month
END

IF(LEN(@year)<4)
BEGIN
IF(LEN(@year) = 3)
BEGIN
set @year = '0'+@year
END

IF(LEN(@year) = 2)
BEGIN
set @year = '00'+@year
END

IF(LEN(@year) = 1)
BEGIN
set @year = '000'+@year
END
END

IF(LEN(@hour)<2)
BEGIN
set @hour = '0' + @hour
END

IF(LEN(@minute)<2)
BEGIN
set @minute = '0' + @minute
END

IF(LEN(@second)<2)
BEGIN
set @second = '0' + @second
END
set @result = @day + ':' + @month + ':' + @year + ' ' + @hour + ':' + @minute + ':' + @second
print @result

Thanks

thanhthao_xayxat
18-05-2011, 04:19 PM
"set dateformat dmy"
lúc đó sql server sẽ định dạng ngày tháng năm cho bạn.
http://msdn.microsoft.com/en-us/library/aa259188(SQL.80).aspx

nhocjerry
18-05-2011, 04:20 PM
Tớ đã tham khảo trên sql thì nếu muốn chuyển định dạng ngày/tháng/năm thì mình cho thêm
câu lệnh : "Set dateformat dmy ..." chỗ ... cậu viết tiếp câu lệnh vào nhé!
Hãy thử xem nhé!
Bạn này nói đúng rồi nè, chỉ cần dùng câu lệnh này là thay đổi định dạng ngày tháng trong sql thôi mà

Ryani2410
18-05-2011, 04:28 PM
"set dateformat dmy"
lúc đó sql server sẽ định dạng ngày tháng năm cho bạn.
http://msdn.microsoft.com/en-us/library/aa259188(SQL.80).aspx

Đây cũng là 1 hàm hay nhưng mà vấn đề mình cần là format theo 1 dữ liệu ngày tháng đã có sẵn.Cái hàm trên chỉ có format khi input vào thôi.

tienthanh97
26-05-2011, 08:22 PM
trời ơi cái nay de ma bạn đâu cần phải làm gì phức tạp.bạn vào SQL và viết 1 câu lệnh
set dateformat dmy là ok mà :D

macdonavn2010
30-09-2011, 09:58 PM
Mình muốn lưu ngày giờ thao tác của người dùng..nên có viết 1 function để khi người dùng thao tác gì làm thay đổi dữ liệu thì lưu vào CSDL là SQL Server 2005. Nhưng mình muốn SQL Server định dạng theo dd/mm/yyyy. Để làm được điều đó thì mình phải làm sao?
Cám ơn các bạn đã đọc và hướng dẫn.

rất đơn giản bạn à: trong sql bạn sử dụng câu lệnh sau (set dateformat dmy) và nhớ khi thêm vào table nào thì vô hiệu hóa khóa ngoại bản đó.

chúc thành công

phamtritinh
18-04-2012, 03:22 AM
dotritiep ơi cho em hỏi saom em làm em làm như anh với code them xóa sửa bình thường thì được nhưng khi đứa sang code Parameters thì nó báo lỗi Failed to convert parameter value from a String to a DateTime. vậy làm sao anh :((

mrfour.it
18-04-2012, 12:43 PM
(:-)wNếu ko thao tác nhiều, chỉ dùng để xem thui thì cứ để là kiểu char/varchar,... cho dễ làm. Đừng nghĩ rằng máy nào cũng định dạng mm/ dd/yyyy, ăn đạn ngay. Có máy định dạng số phân cách còn khác dấu chấm, phẩy=> chỉnh vỡ mặt đó.hihi

macrown
18-05-2012, 05:45 PM
theo mình máy tính mật định là mm/dd/yyyy sql cũng vậy, mình thay đổi đem qua máy khác ko giống chạy ko được, mất công thiết lập này kia, tốt nhất nên để nguyên, ta sử lý trên form khi lấy dữ liệu lên rồi convert nó lại.

cám ơn vì sự tâm huyết