SQL Server 2008 才有 date 类型 与 time 类型。
SQL Server 2005 只有 datetime 数据类型。

如果要 SQL 语句,仅仅显示 年-月-日 的话。
可以选择下面的一种方式来处理。

1> select Convert(varchar(30), GETDATE(), 102)
2> go

------------------------------
2011.07.13

(1 行受影响)
1> select Convert(varchar(30), GETDATE(), 111)
2> go

------------------------------
2011/07/13

(1 行受影响)
1> select Convert(varchar(30), GETDATE(), 112)
2> go

------------------------------
20110713

(1 行受影响)


 问:如在Oracle中有以下的语句:
INSERT INTO mytable (id,time) VALUES (100,to_date('2005-3-23 11:23:25','YYYY-MM-DD HH24:MI:SS'));
但是sql server不支持to_date
  最好能给个例子。
  答:
create table simp
(
id int,
time datetime --SQL里自带时间格式
)
insert into simp(id,time) values (100,'2005-3-23 11:23:25')
go
select * from simp
drop table simp
  决定输入的日期如何解释的是set dateformat设置
  SET DATEFORMAT
  设置用于输入 datetime 或 smalldatetime 数据的日期部分(月/日/年)的顺序。
  语法
  SET DATEFORMAT { format | @format_var }
  参数
  format | @format_var
  是日期部分的顺序。可以是 Unicode 或转换为 Unicode 的 DBCS。有效参数包括 mdy、dmy、ymd、ydm、myd 和 dym。美国英语默认值是 mdy。
  注释
  该设置仅用在将字符串转换为日期值时的解释中。它对日期值的显示没有影响。
  SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。
  权限
  SET DATEFORMAT 权限默认授予所有用户。
  示例
  下例使用不同的日期格式处理不同格式的日期字符串。
SET DATEFORMAT mdy
GO
DECLARE @datevar datetime
SET @datevar = '12/31/98'
SELECT @datevar
GO
SET DATEFORMAT ydm
GO
DECLARE @datevar datetime
SET @datevar = '98/31/12'
SELECT @datevar
GO
SET DATEFORMAT ymd
GO
DECLARE @datevar datetime
SET @datevar = '98/12/31'
SELECT @datevar
GO

Sql Server如何返加系统时间
分类: Sql Server 2006-02-21 16:49 1233人阅读 评论(0) 收藏 举报
1.select getdate()
或者
declare @date datetime
set @date=getdate()
select @date
得到的格式:2006-02-21 16:43:01.513
2.SELECT CONVERT(CHAR(5),GETDATE(),108)
得到的格式:16:47
3.SELECT CONVERT(CHAR(20),GETDATE(),108)
得到的格式:16:47:50
select语句后面也可以加上任意的表名(from table)
此时,显示所有记录的系统时间;如果显示一个则加上distinct即可
附:
SELECT CONVERT(CHAR(5),GETDATE(),108)
的参数
日期格式 代号
-------------------- -----------
04/05/2000 101
-------------------- -----------
2000.04.05 102
-------------------- -----------
05/04/2000 103
-------------------- -----------
05.04.2000 104
-------------------- -----------
05-04-2000 105
-------------------- -----------
05 Apr 2000 106
-------------------- -----------
Apr 05, 2000 107
-------------------- -----------
11:33:24 108
-------------------- -----------
Apr 5 2000 11:33:24 109
-------------------- -----------
04-05-2000 110
-------------------- -----------
2000/04/05 111
-------------------- -----------
20000405 112
日期/时间类型:datetime 和 smalldatetime
实际的数据类型没有实际的国际化含义;它们表示具有以下定义的日期/时间值:
datetime
从公历 1753 年 1 月 1 日到公历 9999 年 12 月 31 日的日期和时间,精度为 1/300 秒(即 3.33 毫秒或 0.00333 秒)。
smalldatetime
从公历 1900 年 1 月 1 日到公历 2079 年 6 月 6 日的日期和时间,精度为分钟。29.998 秒或更小的 smalldatetime 值将下舍入到最接近的分钟数;而 29.999 秒或更大的值则上舍入至最接近的分钟数。
Microsoft SQL Server 不接受这些范围外的数据。实际数据在内部存储为两个整数(即 datetime 的 4 个字节整数和 smalldatetime 的 2 个字节整数),它们表示所讨论的日期和时间。由于实际值对于特定于区域设置的格式转换并没有任何实际的意义,所以将由开发人员按照需要来定义这种转换。
SQL Server 2000 支持多种不同的可在服务器上执行且特定于区域设置的转换,而不用依靠开发人员提供的定制解决方案。这些日期样式可以通过 CONVERT 函数来访问,该函数包括一种数据类型、一个表达式和一种可选样式,如下表所示。
包含世纪 不包含世纪 标准 输入(转换为 datetime)
输出(转换为文本)
0 或 100 - 默认值 mon dd yyyy hh:miAM(或 PM)
101 1 美国英语 mm/dd/yy
102 2 ANSI yy.mm.dd
103 3 英国英语/法语 dd/mm/yy
104 4 德语 dd.mm.yy
105 5 意大利语 dd-mm-yy
106 6 - dd mon yy
107 7 - Mon dd, yy
108 8 - hh:mm:ss
9 or 109 - 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
110 10 美国英语 mm-dd-yy
111 11 日本 yy/mm/dd
112 12 ISO yymmdd
13 or 113 - 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24 小时)
114 14 - hh:mi:ss:mmm(24 小时)
20 或 120 - ODBC 规范 yyyy-mm-dd hh:mi:ss(24h)
21 或 121 - ODBC 规范 + 毫秒 yyyy-mm-dd hh:mi:ss.mmm(24 小时)
126 - ISO8601(无空格) yyyy-mm-dd Thh:mm:ss:mmm
130 - 科威特语 (Hijri) dd mon yyyy hh:mi:ss:mmmAM
131 - 科威特语 (Hijri) dd/mm/yy hh:mi:ss:mmmAM

以下示例说明了如何使用 CONVERT 函数:
SELECT CONVERT(char, GETDATE(), 100) AS [100]
Aug 16 2000 11:50AM
然后,您可以按类似的方式将数据从字符串转换为日期值:
SELECT CONVERT(datetime, 'Aug 16 2000 11:50AM', 100) AS [100]
值得注意的是,当使用 Style 130(科威特语或 Hijri)转换这些日期时,如果排序规则不是一种使用 Unicode 转换代码页 1256 的阿拉伯排序规则,那么在转换为 char 数据类型时就可能会毁坏数据。下面的图解(图 1)说明了这一问题。

图 1:转换日期/时间的 Transact-SQL
注意,在 U.S. 客户端计算机上,尝试使用 char 数据类型会使阿拉伯字符转换为问号,并使 nchar 数据类型呈现为阿拉伯字符。由于 SQL Query Analyzer 内 SQL 网格的限制,这种特殊字符串仍然不能显示正确的格式(象在阿拉伯文客户端计算机上那样)。下面的图解(图 2)说明了实际的 Hijri 日期字符串应该如何显示。

图 2:Hijri 日期字符串
由于复杂脚本(如阿拉伯语)具有必须应用的成形规则,所以数据能够正确地呈现。在使用双向 (BIDI) 语言(如希伯来语)情况下,所有数据将被反转;其效果要比在使用阿拉伯语的情况下更为明显。这是因为字母的实际形状会根据周围的字母发生变化。Windows 2000 或支持阿拉伯语的 Windows 早期版本中不会出现这种问题。
另外,返回的数据字符串自身会在需要它的双向语言环境中引发问题,因为象 Internet Explorer 或 Windows 2000 这样的应用程序所使用的双向语言文本的布局规则会使日期以下面图解(图 3)中所示的形式显示。

图 3:双向日期字符串示例
此可视顺序 (dd hh:mi:ss yyyy mon :) 显然不是预期的顺序;虽然通过在字符串前添加相应的 Unicode 控制字符可以很容易解决该问题,但仍可以将该问题视作 CONVERT 函数中 130 样式的一般限制,如以下查询所示:
SELECT NCHAR(8207) + CONVERT(nchar, GETDATE(), 130)
NCHAR 函数返回一个基于传入 Unicode 代码数据点的字符。8207 或 16 进制的 0x200F 是从右到左的标记 (RLM),有助于正确显示字符串。