将SQL查询出的日期更改格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将SQL查询出的日期更改格式相关的知识,希望对你有一定的参考价值。

SQL在插入新表的时候表中有个datetime字段,显示精确到毫秒,但我不想要那个毫秒,到秒就够了,如何对表进行更新

1、点击“开始”——“Microsoft SQL Server 2005”——“Microsoft SQL Server Management Studio”。

2、在打开的“连接到服务器”界面,输入服务器名称、数据库登录名和密码等信息。

3、点击“连接”,连接到SQL SERVER数据库。

4、使用Convert函数可以将字符串转换为日期类型,从而存储在日期时间类型的字段中。点击“新建查询”,新建一个SQL文本。

5、在SQL文本中,输入SQL 语句,如图所示。点击“执行”,查看运行效果。

6、点击“执行”,查看运行效果。

参考技术A

1、创建测试表,含datetime类型的字段;

create table test_datetime(id int,dt datetime(2));

2、插入测试数据;

insert into test_datetime values(1,'2019-03-05 01:53:55.63');

insert into test_datetime values(2,'2019-03-05 01:42:32.22');

insert into test_datetime values(3,'2019-03-05 01:12:21.11');

3、查询表中记录,可以发现是精确到毫秒;

select * from test_datetime t;

4、编写sql,将datetime字段,精确到秒;

select t.*, FROM_UNIXTIME(floor(unix_timestamp(dt))) b from test_datetime t;

可以发现新字段,已精确到秒。

参考技术B 下边是sql 中关于 日期字段转换格式 大全,希望对你有帮助。
SELECT CONVERT(varchar(10),CONVERT(datetime,employee_birthday,111),111)
FROM employee

其它格式转换的范例如下:
--YYYY/MM/DD
Select Convert(varchar(10),Getdate(),111)
--YYYYMMDD
Select Convert(varchar(10),Getdate(),112)
--HH:MM:SS
Select Convert(varchar(8),Getdate(),108)
--HH:MM:SS:mmm
Select Convert(varchar(12),Getdate(),114)

---------------------------------------------------------------------------------
如何用sql语言只获得数据库当前日期,且格式为"yyyy-mm-dd"?
select convert(char(10),getdate(),120)

---------------------------------------------------------------------------------

--字符转换为日期时,Style的使用

--1. Style=101时,表示日期字符串为:mm/dd/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',101)
--结果:2003-11-01 00:00:00.000

--2. Style=101时,表示日期字符串为:dd/mm/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',103)
--结果:2003-01-11 00:00:00.000

/*== 日期转换为字符串 ==*/
DECLARE @dt datetime
SET @dt='2003-1-11'

--1. Style=101时,表示将日期转换为:mm/dd/yyyy 格式
SELECT CONVERT(varchar,@dt,101)
--结果:01/11/2003

--2. Style=103时,表示将日期转换为:dd/mm/yyyy 格式
SELECT CONVERT(varchar,@dt,103)
--结果:11/01/2003

/*== 这是很多人经常犯的错误,对非日期型转换使用日期的style样式 ==*/
SELECT CONVERT(varchar,'2003-1-11',101)
--结果:2003-1-11

--1.
/*--说明
SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响
但不影响明确指定了style的CONVERT处理。
--*/

--示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第二个CONVERT转换指定了style,转换结果受style的影响。
--设置输入日期顺序为 日/月/年
SET DATEFORMAT DMY

--不指定Style参数的CONVERT转换将受到SET DATEFORMAT的影响
SELECT CONVERT(datetime,'2-1-2005')
--结果: 2005-01-02 00:00:00.000

--指定Style参数的CONVERT转换不受SET DATEFORMAT的影响
SELECT CONVERT(datetime,'2-1-2005',101)
--结果: 2005-02-01 00:00:00.000
GO

--2.
/*--说明

如果输入的日期包含了世纪部分,则对日期进行解释处理时
年份的解释不受SET DATEFORMAT设置的影响。
--*/

--示例,在下面的代码中,同样的SET DATEFORMAT设置,输入日期的世纪部分与不输入日期的世纪部分,解释的日期结果不同。
DECLARE @dt datetime

--设置SET DATEFORMAT为:月日年
SET DATEFORMAT MDY

--输入的日期中指定世纪部分
SET @dt='01-2002-03'
SELECT @dt
--结果: 2002-01-03 00:00:00.000

--输入的日期中不指定世纪部分
SET @dt='01-02-03'
SELECT @dt
--结果: 2003-01-02 00:00:00.000
GO

--3.
/*--说明

如果输入的日期不包含日期分隔符,那么SQL Server在对日期进行解释时
将忽略SET DATEFORMAT的设置。
--*/

--示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT设置下,其解释的结果是一样的。
DECLARE @dt datetime

--设置SET DATEFORMAT为:月日年
SET DATEFORMAT MDY
SET @dt='010203'
SELECT @dt
--结果: 2001-02-03 00:00:00.000

--设置SET DATEFORMAT为:日月年
SET DATEFORMAT DMY
SET @dt='010203'
SELECT @dt
--结果: 2001-02-03 00:00:00.000

--输入的日期中包含日期分隔符
SET @dt='01-02-03'
SELECT @dt
--结果: 2003-02-01 00:00:00.000

--以下示例演示了在不同的语言环境(SET LANGUAGE)下,DATENAME与CONVERT函数的不同结果。
USE master

--设置会话的语言环境为: English
SET LANGUAGE N'English'
SELECT
DATENAME(Month,GETDATE()) AS [Month],
DATENAME(Weekday,GETDATE()) AS [Weekday],
CONVERT(varchar,GETDATE(),109) AS [CONVERT]
/*--结果:
Month Weekday CONVERT
------------- -------------- -------------------------------
March Tuesday Mar 15 2005 8:59PM
--*/

--设置会话的语言环境为: 简体中文
SET LANGUAGE N'简体中文'
SELECT
DATENAME(Month,GETDATE()) AS [Month],
DATENAME(Weekday,GETDATE()) AS [Weekday],
CONVERT(varchar,GETDATE(),109) AS [CONVERT]
/*--结果
Month Weekday CONVERT
------------- --------------- -----------------------------------------
05 星期四 05 19 2005 2:49:20:607PM
--*/
参考技术C 1> select Convert(varchar(30), GETDATE(), 120)
2> go

------------------------------
2011-03-28 13:17:41

(1 行受影响)

这个效果?追问

是的,但我要查询的表里面全都是精确到毫秒的,我不想要毫秒,想把表里的毫秒全部屏蔽掉,就精确到秒就行,如何更新表啊,请指教啊

追答

1> create table t123 ( test datetime );
2> go
1> insert into t123 VALUES ( GETDATE() );
2> go

(1 行受影响)
1> select * from t123;
2> go
test
-----------------------
2011-03-28 17:22:00.627

(1 行受影响)
1> UPDATE t123
2> SET test = Convert(datetime, Convert(varchar(30), test, 120), 120);
3> go

(1 行受影响)
1> select * from t123;
2> go
test
-----------------------
2011-03-28 17:22:00.000

(1 行受影响)

本回答被提问者采纳
参考技术D update [table] set [字段]=Convert(varchar(30), [字段], 120) where 1=1

以上是关于将SQL查询出的日期更改格式的主要内容,如果未能解决你的问题,请参考以下文章

通过运行 SQL 查询在 MS Access 2012 上更改年份日期格式的错误

将日期转换为另一种格式的 SQL 查询

sql 怎样将时间转成日期?

SQL查询其中日期=今天减去7天

日期格式的 Oracle SQL 查询

SQL 日期格式 BETWEEN 查询