1
創建的函數將日期更改爲這種格式yyyymmddThhmmssZ
的SQL Server:功能更改日期格式YYYYMMDDTHHMMSSZ
下面是函數
USE [IMT]
GO
/****** Object: UserDefinedFunction [dbo].[GetForamttedDate] Script Date: 09/05/2014 12:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: rthomas
-- Create date: 04/08/14
-- =============================================
ALTER FUNCTION [dbo].[GetForamttedDate]
(
-- Add the parameters for the function here
@InitialDate smalldatetime
)
RETURNS VARCHAR
AS
BEGIN
Declare @FormatDateInitial varchar(50)
Declare @FormatDate varchar(50)
Declare @FormatDateFinal VARCHAR(50)
Declare @Debug BIT = 0
SET @FormatDateInitial = (SELECT convert(varchar(30), @InitialDate,121))
SET @FormatDate =(SELECT SUBSTRING(@FormatDateInitial,1,4)+SUBSTRING(@FormatDateInitial,6,2)+SUBSTRING(@FormatDateInitial,9,2)+' '+SUBSTRING(@FormatDateInitial,12,2)+SUBSTRING(@FormatDateInitial,15,2)+SUBSTRING(@FormatDateInitial,18,2))
SET @FormatDateFinal= STUFF(@FormatDate,9,1,'T')+'Z'
return @FormatDateFinal
END
GO
而且它返回20140805T121109Z
但是,當我在表中使用這個函數作爲日期列,它只返回一個字符。
select function_name(date_column) from table
回報只有2
請幫我
請提供該函數的定義,包括參數,類型和列的內容。另外,使用varchar(max)是毫無意義的 - 你在任何時候都不期待2GB blob – 2014-09-05 08:18:01
你爲什麼要在數據庫中處理表示?這確實應該是表示層的工作。 – Luaan 2014-09-05 08:18:37
我幾乎打賭你有一個'RETURNS VARCHAR'沒有任何**長度**的varchar定義 - 然後你得到一個** 1字符**的默認長度。如果是這樣,請閱讀(和**擁抱!**)[踢壞的習慣:在沒有(長度)的情況下聲明VARCHAR](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-你應該**總是**爲你使用的任何'varchar'變量和參數提供一個長度 – 2014-09-05 08:18:38