SQL Server 取日期时间部分

本文介绍了在SQL中如何使用DateName()和Convert()函数来获取和格式化日期的方法,包括提取年、月、日等信息及将DateTime类型的日期转换为不同格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.cnblogs.com/weiqt/articles/2040800.html

在本文中,GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate() 
用DateName()就可以获得相应的年、月、日,然后再把它们连接起来就可以了:

Select Datename(year,GetDate())+'-'+Datename
(month,GetDate())+'-'+Datename(day,GetDate())

另外,DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:

Select Datename(hour,GetDate())
Select Datename(minute,GetDate())
Select Datename(second,GetDate())
Select Datename(weekDay,GetDate())
Select Datename(week,GetDate())

SQL中的日期类型DateTime的默认格式就是yyyy-mm-dd hh:mi:ss: mmm,可大多数的情况我们只想得到他的日期部分,而不许要后面的时间。上一篇中提到用Datename()函数来截取拼接出不包含时间部分的日期,现在再说一种方法,更加简单的获取到不包含时间的日期!


使用Convert()函数:

select convert(char(10),GetDate(),120) as Date

* 第3个参数就是用来设置日期类型数据的显示样式的,下面介绍几种样式的参数:

100   mm dd yyyy

101   mm/dd/yyyy

102   yyyy.mm.dd

103   dd/mm/yyyy

106   dd mm yyyy

108   hh:mi:ss(时间)

111   yyyy/mm/dd

112   yyyymmdd

120   yyyy-mm-dd

 

复制代码
1 SELECT CONVERT(varchar(100), GETDATE(), 0) 05 9 2011 9:12AM
2  SELECT CONVERT(varchar(100), GETDATE(), 1) 05/09/11
3 SELECT CONVERT(varchar(100), GETDATE(), 2) 11.05.09
4 SELECT CONVERT(varchar(100), GETDATE(), 3) 09/05/11
5 SELECT CONVERT(varchar(100), GETDATE(), 4) 09.05.11
6 SELECT CONVERT(varchar(100), GETDATE(), 5) 09-05-11
7 SELECT CONVERT(varchar(100), GETDATE(), 6) 09 05 11
8 SELECT CONVERT(varchar(100), GETDATE(), 7) 05 09, 11
9 SELECT CONVERT(varchar(100), GETDATE(), 8) 09:13:14
10 SELECT CONVERT(varchar(100), GETDATE(), 9) 05 9 2011 9:13:14:670AM
11 SELECT CONVERT(varchar(100), GETDATE(), 10) 05-09-11
12 SELECT CONVERT(varchar(100), GETDATE(), 11) 11/05/09
13 SELECT CONVERT(varchar(100), GETDATE(), 12) 110509
14 SELECT CONVERT(varchar(100), GETDATE(), 13) 09 05 2011 09:13:14:670
15 SELECT CONVERT(varchar(100), GETDATE(), 14) 09:13:14:670
16 SELECT CONVERT(varchar(100), GETDATE(), 20) 2011-05-09 09:13:14
17 SELECT CONVERT(varchar(100), GETDATE(), 21) 2011-05-09 09:13:14.670
18 SELECT CONVERT(varchar(100), GETDATE(), 22) 05/09/11 9:15:33 AM
19 SELECT CONVERT(varchar(100), GETDATE(), 23) 2011-05-09
20 SELECT CONVERT(varchar(100), GETDATE(), 24) 09:15:33
21 SELECT CONVERT(varchar(100), GETDATE(), 25) 2011-05-09 09:15:33.140
22 SELECT CONVERT(varchar(100), GETDATE(), 100) 05 9 2011 9:15AM
23 SELECT CONVERT(varchar(100), GETDATE(), 101) 05/09/2011
24 SELECT CONVERT(varchar(100), GETDATE(), 102) 2011.05.09
25 SELECT CONVERT(varchar(100), GETDATE(), 103) 09/05/2011
26 SELECT CONVERT(varchar(100), GETDATE(), 104) 09.05.2011
27 SELECT CONVERT(varchar(100), GETDATE(), 105) 09-05-2011
28 SELECT CONVERT(varchar(100), GETDATE(), 106) 09 05 2011
29 SELECT CONVERT(varchar(100), GETDATE(), 107) 05 09, 2011
30 SELECT CONVERT(varchar(100), GETDATE(), 108) 09:16:38
31 SELECT CONVERT(varchar(100), GETDATE(), 109) 05 9 2011 9:16:38:543AM
32 SELECT CONVERT(varchar(100), GETDATE(), 110) 05-09-2011
33 SELECT CONVERT(varchar(100), GETDATE(), 111) 2011/05/09
34 SELECT CONVERT(varchar(100), GETDATE(), 112) 20110509
35 SELECT CONVERT(varchar(100), GETDATE(), 113) 09 05 2011 09:17:19:857
36 SELECT CONVERT(varchar(100), GETDATE(), 114) 09:17:19:857
37 SELECT CONVERT(varchar(100), GETDATE(), 120) 2011-05-09 09:17:19
38 SELECT CONVERT(varchar(100), GETDATE(), 121) 2011-05-09 09:17:19.857
39 SELECT CONVERT(varchar(100), GETDATE(), 126) 2011-05-09T09:17:19.857
40 SELECT CONVERT(varchar(100), GETDATE(), 130) 6 ????? ??????? 1432 9:17:19:857AM
41 SELECT CONVERT(varchar(100), GETDATE(), 131) 6/06/1432 9:17:19:857AM
复制代码
 

转载于:https://www.cnblogs.com/zxbzl/p/5822849.html

### 如何在 SQL Server 中仅获 `datetime` 字段的日期部分 为了从 `datetime` 类型字段中提只有日期部分,在 SQL Server 中有多种方法可以实现这一目标。 #### 方法一:使用 `CAST` 函数 通过将 `datetime` 转换为 `date` 类型来去除时间部分。此方式简单直观,适用于只需要日期而不需要时间的情况: ```sql SELECT CAST(date_in AS date) FROM table_name; ``` 这种方法会直接丢弃掉任何与时间有关的信息[^3]。 #### 方法二:利用 `CONVERT` 函数配合特定样式码 另一种常见做法是采用 `CONVERT` 函数并指定合适的格式化参数(style code),比如使用风格编号 120 或者其他适合的形式: ```sql SELECT CONVERT(varchar(10), date_in, 120) FROM table_name; ``` 这行代码将会把 `datetime` 值转换成形如 'YYYY-MM-DD' 的字符串表示形式[^5]。 如果希望保留原始列的数据类型作为 `datetime` 同时去掉其时间成分,则可以在上述基础上再次将其转化为 `datetime`: ```sql SELECT CONVERT(datetime, CONVERT(varchar(10), date_in, 120)) FROM table_name; ``` 这种方式能够确保最终结果仍然是一个有效的 `datetime` 对象,只是被设定了零点时刻。 #### 方法三:应用 `DATEADD` 和 `DATEDIFF` 组合技巧 对于某些特殊情况下的需求,还可以考虑如下方案——先计算给定日期距离公元纪元起点所经过的日数差值,再加上该起始日期本身: ```sql SELECT DATEADD(dd, DATEDIFF(dd, 0, date_in), 0) FROM table_name; ``` 这里假设系统的默认日期是从1900-01-01开始计数;因此当我们将输入日期减去这个基础日期后再加回去时就得到了仅有日期的结果[^1]。 以上三种途径都可以有效地帮助用户完成从完整的 `datetime` 数据项里抽日期的任务。具体选择哪一种决于实际应用场景和个人偏好等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值