15

学习 SQL Server 有一些我不确定:

具有值的datetime字段: 2012-02-26 09:34:00.000

如果我使用以下方法从表中选择:

CAST(dob2 AS VARCHAR(12) ) AS d1

它将其格式化为: Feb 26 2012

我不确定他如何或为什么 SQL Server 像这样格式化 DateTime。如果你使用datetime2它不会 - 任何人都知道为什么?

4

7 回答 7

7

尝试这个:

select convert(varchar, dob2, 101)
select convert(varchar, dob2, 102)
select convert(varchar, dob2, 103)
select convert(varchar, dob2, 104)
select convert(varchar, dob2, 105)
select convert(varchar, dob2, 106)
select convert(varchar, dob2, 107)
select convert(varchar, dob2, 108)
select convert(varchar, dob2, 109)
select convert(varchar, dob2, 110)
select convert(varchar, dob2, 111)
select convert(varchar, dob2, 112)
select convert(varchar, dob2, 113)

参考:http : //msdn.microsoft.com/en-us/library/ms187928.aspx

http://www.w3schools.com/sql/func_convert.asp

于 2013-02-08T09:40:16.687 回答
7

默认日期格式取决于数据库服务器的语言设置。您也可以按会话更改它,例如:

set language french
select cast(getdate() as varchar(50))
-->
févr 8 2013 9:45AM
于 2013-02-08T09:48:46.820 回答
5

兼容性支持表示在兼容级别 110 下,CAST and CONVERT操作timedatetime2数据类型的默认样式始终为 121。如果您的查询依赖于旧行为,请使用低于 110 的兼容级别,或在受影响的查询中明确指定 0 样式。

这意味着默认情况下 datetime2 CAST as varchar to 121 format。例如;col1 col2格式(下)相同(除了最后的 0)

SELECT CONVERT(varchar, GETDATE(), 121) col1,
       CAST(convert(datetime2,GETDATE()) as varchar) col2,
       CAST(GETDATE() as varchar) col3

SQL 小提琴演示

--Results
COL1                    | COL2                          | COL3
2013-02-08 09:53:56.223 | 2013-02-08 09:53:56.2230000   | Feb 8 2013 9:53AM

仅供参考,如果您使用CONVERT而不是CAST您可以使用第三个参数来指定MSDN上列出的某些格式

于 2013-02-08T09:48:46.193 回答
1

在 MS SQL Server 中,您可以执行以下操作:

SET DATEFORMAT ymd
于 2013-09-24T15:45:38.393 回答
0

要使用 sql 语法更改日期格式,您应该使用此查询

SELECT DATE_FORMAT(`<columnName>`, '%d/%m/%Y') FROM schemaname.tablename;

前任:-

假设我有一个名为 bugloo 的模式,表名是tbl_company ,在这个tbl_company我有一列都是日期格式%yy/%mm/%dd,列名是createdDate,查询应该像这样

SELECT DATE_FORMAT(`createdDate`, '%d/%m/%Y') FROM bugloo.tbl_company;

运行此查询后,我的输出日期将转换为%dd/%mm/%yyyy

于 2021-03-29T16:01:46.250 回答
0

这是我最喜欢的 112 和 114 用法

select (convert(varchar, getdate(), 112)+ replace(convert(varchar, getdate(), 114),':','')) as 'Getdate() 

112 + 114 or YYYYMMDDHHMMSSMSS'

结果:

Getdate() 112 + 114 或 YYYYMMDDHHMMSSMSS

20171016083349100

于 2017-10-16T12:34:15.587 回答
0
case when isdate(inputdate) = 1 
then convert(datetime, cast(inputdate,datetime2), 103)
else
case when isdate(inputdate) = 0 
then convert(datetime, cast(inputdate,datetime2), 103)
于 2016-10-18T18:57:08.740 回答