Sqlserver中對時間類型的字段轉換


獲取當前日期利用 convert 來轉換成我們需要的datetime格式.
select  CONVERT( varchar( 12) ,  getdate(),  112 )
20040912
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  102 )
2004.09.12
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  101 )
09/12/2004
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  103 )
12/09/2004
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  104 )
12.09.2004
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  105 )
12-09-2004
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  106 )
12 09 2004
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  107 )
09 12, 2004
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  108 )
11:06:08
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  109 )
09 12 2004 1
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  110 )
09-12-2004
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  113 )
12 09 2004 1
------------------------------------------------------------
select  CONVERT( varchar( 12) ,  getdate(),  114 )
11:06:08.177
------------------------------------------------------------

declare @dateTime DateTime--定義一個datetime的變量
set @dateTime=getdate(); --獲取系統當前時間,並賦值給@dateTime字段

--短日期格式:yyyy-m-d
SELECT  REPLACE( CONVERT( varchar( 10), @dateTime, 120),N ' -0 ', ' - ')

--長日期格式:yyyy年mm月dd日
SELECT  STUFF( STUFF( CONVERT( char( 8), @dateTime, 112), 5, 0,N ' '), 8, 0,N ' ') +N ' '

--長日期格式:yyyy年m月d日
SELECT  DATENAME( Year, @dateTime) +N ' ' + CAST( DATEPART( Month, @dateTimeAS  varchar) +N ' ' + DATENAME( Day, @dateTime) +N ' '

--完整日期+時間格式:yyyy-mm-dd hh:mi:ss:mmm
SELECT  CONVERT( char( 11), @dateTime, 120) + CONVERT( char( 12), @dateTime, 114)

------------------------------------------------------------------------------------------------

2、日期推算處理
DECLARE  @dt  datetime
SET  @dt = GETDATE()
DECLARE  @number  int
SET  @number = 3

  1.指定日期該年的第一天或最后一天
  1.1 年的第一天
SELECT  CONVERT( char( 5), @dt, 120) + ' 1-1 '

  1.2 年的最后一天
SELECT  CONVERT( char( 5), @dt, 120) + ' 12-31 '

  2.指定日期所在季度的第一天或最后一天
  2.1 季度的第一天
SELECT  CONVERT( datetime, CONVERT( char( 8), DATEADD( Month, DATEPART(Quarter, @dt) * 3 - Month( @dt) - 2,
@dt), 120) + ' 1 ')

  2.2 季度的最后一天(CASE判斷法)

SELECT  CONVERT( datetime, CONVERT( char( 8), DATEADD( Month, DATEPART(Quarter, @dt) * 3 - Month( @dt), @dt), 120) + CASE  WHEN  DATEPART(Quarter, @dtin( 1, 4) THEN  ' 31 ' ELSE  ' 30 '  END)


  2.3 季度的最后一天(直接推算法)

SELECT  DATEADD( Day, - 1, CONVERT( char( 8), DATEADD( Month, 1 + DATEPART(Quarter, @dt) * 3 - Month( @dt), @dt), 120) + ' 1 ')


  3.指定日期所在月份的第一天或最后一天
  3.1 月的第一天

SELECT  CONVERT( datetime, CONVERT( char( 8), @dt, 120) + ' 1 ')


  3.2 月的最后一天

SELECT  DATEADD( Day, - 1, CONVERT( char( 8), DATEADD( Month, 1, @dt), 120) + ' 1 ')


  3.3 月的最后一天(容易使用的錯誤方法)

SELECT  DATEADD( Month, 1, DATEADD( Day, - DAY( @dt), @dt))


  3.4 指定日期所在周的任意一天

SELECT  DATEADD( Day, @number - DATEPART(Weekday, @dt), @dt)


  5.指定日期所在周的任意星期幾
  5.1 星期天做為一周的第1天

SELECT  DATEADD( Day, @number -( DATEPART(Weekday, @dt) + @@DATEFIRST - 1) % 7, @dt)


  5.2 星期一做為一周的第1天

SELECT  DATEADD( Day, @number -( DATEPART(Weekday, @dt) + @@DATEFIRST - 2) % 7 - 1, @dt)



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM