【转】sql server 时间转字符串

日期时间转字符串

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM

### SQL Server 中的时间日期换为字符串的方法 在 SQL Server 中,可以使用 `CONVERT` 和 `CAST` 函数将时间日期数据类型(如 `DATETIME`, `SMALLDATETIME` 等)换为字符串。其中最常用的是 `CONVERT` 函数,因为它允许指定日期/时间格式。 #### 使用 `CONVERT` 函数 `CONVERT` 是一种灵活的方式,用于将日期时间换为特定的字符串格式。其语法如下: ```sql SELECT CONVERT(data_type(length), expression, style); ``` - **data_type**: 目标数据类型,通常为 `VARCHAR` 或 `NVARCHAR`。 - **expression**: 待换的表达式,通常是日期时间类型的列或函数(如 `GETDATE()`)。 - **style**: 可选参数,定义输出字符串的具体格式[^1]。 下面是一些常见的样式代码及其对应的日期时间格式: | 样式 | 输出格式 | |------|------------------------------| | 101 | mm/dd/yyyy | | 102 | yyyy.mm.dd | | 103 | dd/mm/yyyy | | 104 | dd.mm.yyyy | | 105 | dd-mm-yyyy | | 120 | yyyy-mm-dd hh:mi:ss(24h) | 示例查询: ```sql -- 当前日期时间为 'yyyy-mm-dd hh:mi:ss' 格式的字符串 SELECT CONVERT(VARCHAR, GETDATE(), 120); -- 将当前日期时间为 'mm/dd/yyyy' 格式的字符串 SELECT CONVERT(VARCHAR, GETDATE(), 101); ``` #### 使用 `FORMAT` 函数 从 SQL Server 2012 开始引入了 `FORMAT` 函数,它提供了更强大的自定义能力,支持 .NET Framework 的标准和自定义日期时间格式说明符[^2]。 语法如下: ```sql SELECT FORMAT(expression, format [, culture]); ``` - **expression**: 表达式,通常是日期时间类型的值。 - **format**: 自定义格式字符串。 - **culture**: (可选)文化信息,默认为服务器的语言设置。 示例查询: ```sql -- 将当前日期时间格式化为 'dd/MM/yyyy HH:mm:ss' SELECT FORMAT(GETDATE(), 'dd/MM/yyyy HH:mm:ss'); -- 使用不同的文化信息 (en-US) SELECT FORMAT(GETDATE(), 'MMMM d, yyyy', 'en-US'); ``` 需要注意的是,虽然 `FORMAT` 功能强大,但它可能会带来性能开销,因此对于大规模的数据操作,推荐优先考虑 `CONVERT`[^2]。 #### 注意事项 默认情况下,SQL Server 对两位数年份的解释基于截至年份 2049 年。这意味着如果输入的年份是两位数,则会将其映射到相应的四位数年份范围。可以通过配置选项 `two digit year cutoff` 来调整这一行为。然而,在实际应用中强烈建议始终提供完整的四位数年份以避免歧义。 --- ### 示例代码 以下是几个具体的例子展示如何实现日期时间字符串换: ```sql -- 使用 CONVERT 进行简单格式化 SELECT CONVERT(VARCHAR, GETDATE(), 103); -- 返回 'dd/mm/yyyy' -- 结合 CAST 实现基础换 SELECT CAST(GETDATE() AS VARCHAR); -- 利用 FORMAT 创建复杂格式 SELECT FORMAT(GETDATE(), 'dddd, MMMM d, yyyy'); -- 显示星期几以及月份名称 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值