SQL中如何取得系统时间和日期(时间要求返回6位,比如152910;日期要求返回8位,比如20070517)
SQL中如何取得系统时间和日期(时间要求返回6位,比如152910;日期要求返回8位,比如20070517)
是不是有什么特定的函数?如果有,那取得系统时间和日期的函数返回类型是字符型吗?(要求是)
[解决办法]
SQL中CONVERT转化函数的用法
CONVERT的使用方法:
////////////////////////////////////////////////////////////////////////////////////////
格式:
CONVERT(data_type,expression[,style])
说明:
此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.
例子:
SELECT CONVERT(varchar(30),getdate(),102) now
结果为
now
---------------------------------------
09/15/2001
/////////////////////////////////////////////////////////////////////////////////////
style数字在转换时间时的含义如下
-------------------------------------------------------------
Style(2位表示年份) | Style(4位表示年份) | 输入输出格式
-------------------------------------------------------------
- | 0 or 100 | mon dd yyyy hh:miAM(或PM)
-------------------------------------------------------------
1 | 101 | mm/dd/yy
-------------------------------------------------------------
2 | 102 | yy-mm-dd
-------------------------------------------------------------
3 | 103 | dd/mm/yy
-------------------------------------------------------------
4 | 104 | dd-mm-yy
-------------------------------------------------------------
5 | 105 | dd-mm-yy
-------------------------------------------------------------
6 | 106 | dd mon yy
-------------------------------------------------------------
7 | 107 | mon dd,yy
-------------------------------------------------------------
8 | 108 | hh:mm:ss
-------------------------------------------------------------
- | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)
-------------------------------------------------------------
10 | 110 | mm-dd-yy
-------------------------------------------------------------
11 | 111 | yy/mm/dd
-------------------------------------------------------------
12 | 112 | yymmdd
-------------------------------------------------------------
- | 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24小时制)
-------------------------------------------------------------
14 | 114 | hh:mi:ss:mmm(24小时制)
-------------------------------------------------------------
- | 20 or 120 | yyyy-mm-dd hh:mi:ss(24小时制)
-------------------------------------------------------------
- | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制)
-------------------------------------------------------------
[解决办法]
SELECT replace(CONVERT(varchar(30),getdate(),102), '. ', ' ') now
SELECT replace(CONVERT(varchar(30),getdate(),108), ': ', ' ') now
[解决办法]
select replace(replace(replace(convert(char(19),getdate(),120), '- ', ' '), ': ', ' '), ' ', ' ')
/*
------------------------
20070517154032
(所影响的行数为 1 行)
*/
getdate()返回是datetime型,需用convert函数转为字符型
[解决办法]
select replace(convert(varchar(8),getdate(),108), ': ', ' ')
[解决办法]
IF EXISTS(SELECT NAME FROM sysobjects
WHERE NAME = N 'funGetNewDate ' )
DROP FUNCTION funGetNewDate
GO
CREATE FUNCTION funGetNewDate
(
@Date DATETIME
)
RETURNS NVARCHAR(10)
AS
BEGIN
DECLARE @Year INT
DECLARE@MonthINT
DECLARE@DayINT
DECLARE @NewDate NVARCHAR(10)
SET @Year= DATEPART( yyyy,@Date )
SET @Month= DATEPART( mm,@Date )
SET @Day= DATEPART( dd,@Date )
SELECT @NewDate = ( STR( @Year,4,0 )
+ N '- '
+ ( SELECT
CASE
WHEN @Month > = 10 THEN STR( @Month, 2, 0 )
WHEN @Month <10 THEN '0 ' + STR( @Month, 1, 0)
END
)
+ N '- '
+ ( SELECT
CASE
WHEN @Day > = 10 THEN STR( @Day, 2, 0 )
WHEN @Day <10 THEN '0 ' + STR( @Day, 1, 0)
END
)
)
RETURN @NewDate
END
GO
select dbo.funGetNewDate(getdate()) as 当前日期
参考下
[解决办法]
declare
@systime varchar(6)
select @systime=replace(convert(varchar(6),getdate(),108), ': ', ' ')
有点写错了,应该是:
select @systime=replace(convert(varchar(8),getdate(),108), ': ', ' ')