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函数转为字符型

 


如果时间是15:26:12,
则时间要求返回6位的样式,比如:152612,有什么办法吗?各位大哥能帮我写一个例子吗?
SELECT   CONVERT(varchar(30),getdate(),102)得到的日期是不是一个总共30位的变量?
如果要得到的是8位,是不是这样写的:
select   convert(varchar(8),getdate(),112)

 

不胜感激!

 


select   replace(convert(varchar(8),getdate(),108), ': ', ' ')

 

 


select   replace(convert(varchar(8),getdate(),108), ': ', ' ')
我能不能把这个得到的值赋给一个6位的字符变量呢?谢谢!如果要把得到的时间值赋给一个6位的又该怎么做呢?
declare  
@systime   varchar(6)

 

select   @systime=replace(convert(varchar(6),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 @Month INT
DECLARE @Day INT
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), ': ', ' ')

 


谢谢各位的精彩回复!今天我学到了很多东西!

 

 


mark

 

 


create table name
(
id nvarchar2(10) primary key,
card nvarchar2(10),
dat date default ******,
sig nvarchar2(2),
check(sig=’y’ or sig=’n')
);

 

如何将dat 的默认值取系统时间呢?**** 出代码该如何写?

 


如果日期和具体时间都有 就更好啦

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值