学习 SQL Server 有一些我不确定:
具有值的datetime
字段:
2012-02-26 09:34:00.000
如果我使用以下方法从表中选择:
CAST(dob2 AS VARCHAR(12) ) AS d1
它将其格式化为:
Feb 26 2012
我不确定他如何或为什么 SQL Server 像这样格式化 DateTime。如果你使用datetime2
它不会 - 任何人都知道为什么?
学习 SQL Server 有一些我不确定:
具有值的datetime
字段:
2012-02-26 09:34:00.000
如果我使用以下方法从表中选择:
CAST(dob2 AS VARCHAR(12) ) AS d1
它将其格式化为:
Feb 26 2012
我不确定他如何或为什么 SQL Server 像这样格式化 DateTime。如果你使用datetime2
它不会 - 任何人都知道为什么?
尝试这个:
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)
默认日期格式取决于数据库服务器的语言设置。您也可以按会话更改它,例如:
set language french
select cast(getdate() as varchar(50))
-->
févr 8 2013 9:45AM
兼容性支持表示在兼容级别 110 下,CAST and CONVERT
操作time
和datetime2
数据类型的默认样式始终为 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
--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上列出的某些格式
在 MS SQL Server 中,您可以执行以下操作:
SET DATEFORMAT ymd
要使用 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
这是我最喜欢的 112 和 114 用法
select (convert(varchar, getdate(), 112)+ replace(convert(varchar, getdate(), 114),':','')) as 'Getdate()
112 + 114 or YYYYMMDDHHMMSSMSS'
结果:
Getdate() 112 + 114 或 YYYYMMDDHHMMSSMSS
20171016083349100
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)