�������أ��������ḻ�ȫ������վ��

��ҳ �� ���̿��� �� VC(VC++) �� SQL Server���ڼ���

SQL Server���ڼ���

���������������� ��Դ����վʱ�䣺2010/10/14 9:21:35������С��A-A+

����

���ߣ���������������1246�����ۣ�1����ǩ��

     ͨ�����õ�ǰ���ںͼ���һЩ���ڣ����磬����������Ҫ�ж�һ���µĵ�һ����������һ�졣�󲿷��˰����ڽ��зָ�ꡢ�¡��յȣ���Ȼ�������÷ָ��������ꡢ�¡��յȷ��ڼ��������м������Լ�����Ҫ�����ڣ�����ƪ���������̽����SQL��ʹ��DATEADD��DATEDIFF��������������ͬ���ڡ�

      ��һ�죨DATEFIRST���趨����������ϵͳʹ����һ����Ϊһ�ܵĵ�һ�졣�������µ����Ӷ�������������Ϊһ�ܵĵ�һ����������Ҳ���ǵ�һ������Ϊ7���������ĵ�һ�����ò�һ������������Ҫ������Щ���ӣ�ʹ���Ͳ�ͬ�ĵ�һ�����������ϡ�������ͨ��@@DATEFIRST������������һ�����á�

�����ȸ�ϰһ��DATEDIFF��DATEADD������

DATEDIFF����������������֮����Сʱ���졢�ܡ��¡�����ʱ������������
DATEADD��������һ������ͨ����ʱ�������Ӽ�������һ���µ����ڡ�
Ҫ�˽�������DATEDIFF��DATEADD�����Լ�ʱ�����������Ķ�΢������������

����һ���µ�һ����SQL �ű���SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

      �ű����ͣ����ǰ����������ֿ��������������ι����ġ������ĵĺ�����getdate()�������Ƿ��ص�ǰ�����ں�ʱ���ĺ�������һ��ִ�еĺ���DATEDIFF(mm,0,getdate())�Ǽ��㵱ǰ���ں�"1900-01-01 00:00:00.000"��������֮������������ס��ʱ�ں�ʱ�������ͺ���һ���Ǵ�"1900-01-01 00:00:00.000"��ʼ�����ġ�������Ϊʲô��������DATEDIFF������ָ����һ��ʱ������ʽΪ"0"����һ��������DATEADD�����ӵ�ǰ���ڵ�"1900-01-01"��������ͨ������Ԥ����������"1900-01-01"�͵�ǰ���ڵ����������ǿ��Ի��������µĵ�һ�졣���⣬�������������ڵ�ʱ�䲿�ֽ�����"00:00:00.000"��

���������ļ������ȼ��㵱ǰ���ڵ�"1900-01-01"��ʱ����������Ȼ�������ӵ�"1900-01-01"�����������������ڣ��������ɿ������������ܶ಻ͬ�����ڡ���һ������Ҳ�����������ɴӵ�ǰ������������ͬ�����ڡ�

���ܵ�����һ��SQL �ű��� SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
������������(wk)��ʱ��������������һ���DZ��ܵ�����һ��

һ���ĵ�һ����SQL �ű���SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
����(yy)��ʱ����������ʾ��һ���ĵ�һ�졣

���ȵĵ�һ����SQL �ű���SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

�����İ�ҹ��SQL �ű���SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
������Ҫͨ��getdate()����Ϊ�˷���ʱ��ֵ�ص�ʱ�䲿�֣��ͻῼ�ǵ���ǰ�����Dz����ڰ�ҹ��������������������ʹ��DATEDIFF��DATEADD���������ð�ҹ��ʱ���㡣

����DATEDIFF��DATEADD��������

���������ף�ͨ��ʹ�ü򵥵�DATEDIFF��DATEADD�������㣬�����Է��ֺܶ಻ͬ�Ŀ��������������ڡ�

      ĿǰΪֹ����������ֻ�ǽ������㵱ǰ��ʱ����"1900-01-01"֮����ʱ������������Ȼ�������ӵ�"1900-01-01"��ʱ�������������������ڡ��ٶ����޸�ʱ������������������ʹ�ò�ͬ��ʱ������������DATEADD���������߼�ȥʱ���������������ӣ���ôͨ����ЩС�ĵ��������Է��ֺͶ಻ͬ�����ڡ�

�������ĸ�����ʹ������һ��DATEADD��������������һ�����ֱ��滻DATEADD����ǰ������ʱ��������

     �ϸ��µ�����һ����SQL �ű���SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
����һ�������ϸ�������һ�������ӡ���ͨ����һ���µ�����һ�����������ϼ�ȥ3���������á���һ��Ҫ��ס����Sql Server��ʱ���Ǿ�ȷ��3���롣������Ϊʲô����Ҫ��ȥ3������������Ҫ�����ں�ʱ�䡣

�������������ڵ�ʱ�䲿�ְ�����һ��Sql Server���Լ�¼��һ��������ʱ�̵�ʱ�䡣

ȥ��������һ����SQL �ű���SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
�������������ӣ�Ϊ��Ҫ�õ�ȥ��������һ�죬����Ҫ�ڽ����ĵ�һ���ϼ�ȥ3���롣

      ���µ�����һ����SQL �ű��� SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
���ڣ�Ϊ�˻��ñ��µ�����һ�죬����Ҫ��΢�޸�һ�»����ϸ��µ�����һ�������䡣�޸���Ҫ����DATEDIFF�Ƚϵ�ǰ���ں�"1900-01-01"���ص�ʱ�������ϼ�1��ͨ����1���£��Ҽ������¸��µĵ�һ�죬Ȼ����ȥ3���룬�����ͼ������������µ�����һ�졣���Ǽ��㱾������һ����SQL�ű���

      ����������һ����SQL �ű��� SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
���µĵ�һ������һ��SQL �ű���select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
�������������ʹ����"���ܵ�����һ"�Ľű���������һ�����޸ġ��޸ĵIJ����ǰ�ԭ���ű���"getdate()"�����滻�ɼ��㱾�µĵ�6�죬�ڼ������ñ��µĵ�6�����滻��ǰ����ʹ�ü������Ի��������µĵ�һ������һ��

�ܽ�

��ϣ����Щ���ӿ���������DATEADD��DATEDIFF������������ʱ����һ��������ͨ��ʹ�������������ڵ�ʱ����������ѧ�������ҷ���Ϊ����ʾ��������֮�������������������м�ֵ�ġ�ע�⣬��ֻ�Ǽ�������Щ���ڵ�һ�ַ�����Ҫ�μǣ����кܶ෽�����Եõ���ͬ�ļ����������������������ķ������Ǻܲ�����Ҫ����û�У���ϣ����Щ���ӿ��Ը���һЩ����������Ҫ��DATEADD��DATEDIFF������������������Ҫ�õ�������ʱ��

---------------------------------------------------------------
��¼���������ڴ�������

1)ȥ��ʱ����
declare @ datetime
set @ = getdate() --'2003-7-1 10:00:00'
SELECT @,DATEADD(day, DATEDIFF(day,0,@), 0)

2����ʾ���ڼ�
select datename(weekday,getdate())

3������ȡ��ij���µ�����
declare @m int
set @m=2 --�·�
select datediff(day,'2003-'+cast(@m as varchar)+'-15' ,'2003-'+cast(@m+1 as varchar)+'-15')
���⣬ȡ�ñ�������
select datediff(day,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate()) as varchar)+'-15' ,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate())+1 as varchar)+'-15')
����ʹ�ü��㱾�µ�����һ���Ľű���Ȼ����DAY����������һ��
SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)))

4���ж��Ƿ����꣺
SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then 'ƽ��' else '����' end
����
select case datediff(day,datename(year,getdate())+'-02-01',dateadd(mm,1,datename(year,getdate())+'-02-01'))
when 28 then 'ƽ��' else '����' end

5��һ�����ȶ�����
declare @m tinyint,@time smalldatetime
select @m=month(getdate())
select @m=case when @m between 1 and 3 then 1
when @m between 4 and 6 then 4
when @m between 7 and 9 then 7
else 10 end
select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
select datediff(day,@time,dateadd(mm,3,@time))

��������

�Ķ����ĺ�����ʲô����? ���� �˸�������!

  • 2791 ϲ��ϲ��
  • 2101 ����
  • 800 �ѹ��ѹ�
  • 1219 ����
  • 4049 Χ��Χ��
  • 5602 ��������
��������
��������
�������� �鿴��������(1)
�dz�:
����: ���� �� �� �Ҳ�Ҫ ���� �� ������ �ͻ� ʺ ����
����: 0/500 (����������Ҫ�������˲�����ʾ)

���ೣ������