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),有助于正确显示字符串。