PDA

View Full Version : سوال: نوع داده date در sql server



morteza271
پنج شنبه 11 شهریور 1389, 19:21 عصر
سلام دوستان...

یه سوال در مورد تاریخ توی دیتابیس sql server دارم:چشمک:

میخواستم ببینم که آیا میشه توی یه جدول نوع یکی از ستون ها رو که مثلا اسمش هست time رو از نوع date که خود sql داره گذاشت؟!
ایا میشه توی اون ستون تاریخ شمسی گذاشت؟
یا اینکه بهتره نوع اون ستون رو nvarchar تعریف کنم؟!

با تشکر از مهندسان ایران زمین:تشویق:

بهزادصادقی
جمعه 12 شهریور 1389, 00:02 صبح
می توانی از نوع date خود SQL Server استفاده کنی، ولی اون وقت باید خودت کار تبدیل به هجری شمسی را انجام بدی.


create table dbo.TestTimeColumnName
(
id int identity(1,1),
Time date
)

insert dbo.TestTimeColumnName (Time) values ('2010-09-01');
insert dbo.TestTimeColumnName (Time) values ('2010-09-02');
insert dbo.TestTimeColumnName (Time) values ('2010-09-02');

select * from dbo.TestTimeColumnName;

لینک زیر محتوای اطلاعاتی در مورد چند روش برنامه نویسی برای تبدیل تقویم می باشد:

http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/e2cebafc-5811-45db-b624-cb4234227581

morteza271
جمعه 12 شهریور 1389, 00:27 صبح
ممنون.
پس شمسی رو نمیشه توی جدول ذخیره کرد،درسته؟

بهزادصادقی
جمعه 12 شهریور 1389, 00:37 صبح
نگاه کن، حتی خود date استفاده شده در SQL Server هم در حقیقت خودش یک date نیست. بلکه، SQL Server می آید و اون date وارد شده را تبدیل می کند به یک عدد طبیعی (integer) و آن را ذخیره می سازد. هر وقت کاربر می خواست با اون مقدار کار کنه، SQL Server تبدیلش می کنه به یک رشته که قابل رویت بوسیله کاربر باشه. این تبدیل را SQL Server می تواند به صورت خودکار برای خیلی از تقویم ها انجام دهد. حتی هجری قمری. ولی نه هجری شمسی. اگر هجری شمسی می خواهی باید خودت اون رو تبدیل کنی.

پس جواب نه می باشد. SQL Server تا آنجا که من می دانم هنوز توانایی ذخیره، تبدیل، محاسبه و نمایش تاریخ های هجری شمسی را ندارد.