sql语句 改变日期格式

一般存入数据库中的时间格式为yyyy-mm-ddhh:mm:ss 如果要转换为yyyy-mm-dd 短日期格式.可以使用convert函数.下面是sqlserver帮助中关于convert函数的声明:

使用 CONVERT:

CONVERT (data_type[(length)],expression[,style])

参数
expression

是任何有效的 Microsoft® SQL Server™ 表达式。
data_type

目标系统所提供的数据类型,包括bigint和sql_variant。不能使用用户定义的数据类型。

length

nchar、nvarchar、char、varchar、binary或varbinary数据类型的可选参数。

style

日期格式样式,借以将datetime或smalldatetime数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型);或者字符串格式样式,借以将float、real、money或smallmoney数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)。

SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。

在表中,左侧的两列表示将datetime或smalldatetime转换为字符数据的style值。给style值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy) 带世纪数位 (yyyy) 
标准 
输入/输出** 
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM) 
1 101 美国 mm/dd/yyyy 
2 102 ANSI yy.mm.dd 
3 103 英国/法国 dd/mm/yy 
4 104 德国 dd.mm.yy 
5 105 意大利 dd-mm-yy 
6 106 - dd mon yy 
7 107 - mon dd, yy 
8 108 - hh:mm:ss 
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM) 
10 110 美国 mm-dd-yy 
11 111 日本 yy/mm/dd 
12 112 ISO yymmdd 
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h) 
14 114 - hh:mi:ss:mmm(24h) 
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff] 
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff] 
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格) 
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM 
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM 



* 默认值(style0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
** 当转换为datetime时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从datetime或smalldatetime到character数据的转换,输出格式如表中所示。对于从float、money或smallmoney到character数据的转换,输出等同于style2。对于从real到character数据的转换,输出等同于style1。



重要 默认情况下,SQL Server 根据截止年份 2049 解释两位数字的年份。即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。

当从smalldatetime转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从datetime或smalldatetime值进行转换时,可以通过使用适当的char或varchar数据类型长度来截断不需要的日期部分。

=========================================================================

如果只要取yyyy-mm-dd格式时间, 就可以用 convert(nvarchar(10),field,120)
120 是格式代码, nvarchar(10) 是指取出前10位字符.
示例:
SELECT CONVERT(nvarchar(10), publish_time, 120) FROM table_name

如果使用了数据源

CONVERT (nvarchar(10), CreatTime, 120) AS Expr1

SelectCommand="SELECT [ID], [FileName], [FileType], [FileHttp],CONVERT (nvarchar(10), CreatTime, 120) AS Expr1, [CourseNumber], [UserName] FROM [FileUpDown] ORDER BY [Expr1] DESC, [FileType], [FileName]"

绑定字段改为Expr1

<asp:BoundField DataField="Expr1" HeaderText="上传时间" meta:resourcekey="BoundFieldResource6" SortExpression="Expr1">
<HeaderStyle Wrap="False" />
<ItemStyle Width="150px" />
</asp:BoundField>

例如:求SQL更新语句,修改的字段是日期时间型,只需要修改其中的月份。
答:update tablename set datavalue = convert(nvarchar,year(datavalue))+'-'+'要修改的月份' + right(convert(nvarchar(19),datavalue ,120),12) where 条件
其中datavalue 是你的日期字段
### 如何在 SQL 中使用 `DATE_FORMAT` 修改日期格式 #### 函数定义 `DATE_FORMAT()` 是 MySQL 提供的一个用于将日期按照指定格式进行字符串表示的函数。此函数接受两个参数:一个是待处理的时间或日期数据,另一个是指定输出样式的格式模板。 #### 参数说明 - **date**: 需要被格式化的日期值。 - **format**: 定义最终返回结果外观模式串[^1]。 #### 使用实例 下面给出几个具体的应用场景来展示该功能的实际操作方式: ##### 场景一:获取当前系统时间并按特定样式展现 ```sql SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_date; ``` 这条命令会把服务器端此刻的确切时刻转化为形如 "2023-04-05 14:30:00" 的形式输出给客户端应用。 ##### 场景二:从表记录里提取已有的时间戳列,并调整其呈现形态 假设存在一张名为 `tbrecord` 的表格内含有一个叫作 `operatetime` 的字段存储着操作发生的具体时间节点,则可以通过如下指令读取某条目对应的这个属性的同时改变它的视觉效果: ```sql SELECT DATE_FORMAT(operatetime, '%y-%m-%d %H:%i:%s') AS operatetime FROM tbrecord WHERE id = '1'; ``` 这将会使查询出来的那行中的 `operatetime` 显示为类似于 “2020-06-08 17:56:59”的样子[^2]。 ##### 场景三:统计分析涉及时间段的数据集 考虑有一个交易流水账单列表(trade),其中每笔业务都关联了一位顾客以及发生的月份年份等信息。为了汇总某个客户在过去一段时间内的消费总额并且依据不同的会计周期分组排列,可以编写这样的查询语句: ```sql SELECT DATE_FORMAT(t.t_time, '%Y-%m') AS time, SUM(t.t_amount) AS total FROM trade t LEFT JOIN customer c ON t.t_cus = c.c_id WHERE c.c_name = 'Tom' AND t.t_time >= '2021' AND t.t_type = '1' GROUP BY time ORDER BY time; ``` 这段代码不仅实现了对原始资料的选择过滤与聚合运算,还巧妙运用了 `DATE_FORMAT` 来定制化各个月度标签的形式以便于后续解读报表内容[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值