PDA

View Full Version : جداسازی تاریخ از فیلد تاریخ و ساعت



nazaninam
جمعه 21 اردیبهشت 1386, 19:02 عصر
با سلام من یک فیلد از نوع Date دارم که تاریخ و ساعت رو داخلش نگه داری میکنم به این صورت :
3/30/2007 12:27:30 PM
حالا میخوام از این فیلد فقط تاریخ رو جدا کنم که میشه :3/30/2007
و نیز می خوام ساعت هم جدا کنم : 12:27:30
هرچقدر گشتم توابعی برای اینکار پیدا نکردم ، در ضمن از Sql server 2005 استفاده می کنم
ممنون

majid_afra222
جمعه 21 اردیبهشت 1386, 19:16 عصر
سلام
با DATEPART می تونی جدا کنی.

nazaninam
جمعه 21 اردیبهشت 1386, 20:42 عصر
datepart فقط ماه و سال و روز و... دیگه رو میده !! تایخ رو ازساعت جدا نمی کنه که

Microsoft.net
جمعه 21 اردیبهشت 1386, 21:07 عصر
من از تابع left استفاده کردم و تاریخ رو از ساعت جدا کردم ، کار رو راه میندازه مشکلی هم نداره

nazaninam
جمعه 21 اردیبهشت 1386, 21:32 عصر
نه راه خوبی نیست ، یک راه اصولی پیشنهاد بدید

AminSobati
جمعه 21 اردیبهشت 1386, 22:23 عصر
select convert(varchar(30),getdate(),112) as ISO,
convert(varchar(30),getdate(),111) as Iranian,
convert(varchar(30),getdate(),110) as American,
convert(varchar(30),getdate(),108) as TimeOnly

majid_afra222
جمعه 21 اردیبهشت 1386, 22:32 عصر
سلام
لطفا یه بار دیگه DATEPART() رو ببینید:


datepart
Is the parameter that specifies the part of the date to return. The following table lists the dateparts and abbreviations recognized by Microsoft SQL Server 2005.

Datepart Abbreviations
year
yy, yyyy

quarter
qq, q

month
mm, m

dayofyear
dy, y

day
dd, d

week
wk, ww

weekday
dw

hour
hh

minute
mi, n

second
ss, s

millisecond
ms


ببخشید یه کمی بهم ریختس تو BOL ببینیدش.

nazaninam
شنبه 22 اردیبهشت 1386, 22:00 عصر
دوباره دیدم! چیزی برای جدا کردن تاریخ نمی بینم ! مگر اینکه بیام سال و روز و ماه تیکه تیکه جدا کنم که اصلا به کارم نمیاد

hmdrf1
چهارشنبه 02 خرداد 1386, 15:35 عصر
declare
@s nvarchar(300),
@p1 int,
@P2 int,
@P3 int,
@D int,
@M int,
@Y int,
@hh int,
@mm int,
@ss int,
@Dat varchar(10),
@Tim varchar(10),
@id float
set @P1=0
declare crsr cursor for select id,datetime from Sheet1 where isnull(datetime,'')<>'' and substring(isnull(datetime,''),1,1)>='0' and substring(isnull(datetime,''),1,1)<='9'
open crsr
fetch next from crsr into @id,@S
while @@fetch_status<>-1
begin
print @S
set @P1=charindex('/',@s,0)
set @P2=charindex('/',@s,@P1+1)
set @D=cast(substring(@s,1,@P1-1)as int)
set @M=cast(substring(@s,@P1+1,@P2-@P1-1) as int)
set @Y=cast(substring(@s,@P2+1,4) as int)
set @Dat=
cast(@Y as varchar(10))+'/'+
case when @D<10 then '0'+cast(@D as varchar(3)) else cast(@D as varchar(4)) end+'/'+
case when @M<10 then '0'+cast(@M as varchar(3)) else cast(@M as varchar(4)) end
set @P1=charindex(':',@s,0)
set @P2=charindex(':',@s,@P1+1)
print @P1
print @P2


set @hh=cast(substring(@s,@P1-2,2) as int)
print @hh
set @mm=cast(substring(@s,@P1+1,@P2-@p1-1) as int)
print @mm
set @ss=cast(substring(@s,@P2+1,2) as int)
print @ss
set @Tim=
case when @hh<10 then '0'+cast(@hh as varchar(3)) else cast(@hh as varchar(4)) end+':'+
case when @mm<10 then '0'+cast(@mm as varchar(3)) else cast(@mm as varchar(4)) end+':'+
case when @ss<10 then '0'+cast(@ss as varchar(3)) else cast(@ss as varchar(4)) end
update sheet1 set Dat=@Dat,Tim=@Tim where id=@id
fetch next from crsr into @id,@S
end