7

嗨我想问你如何写一个语句来更新数据库中的日期字段;我有一个包含一行的表,其中一个值在

YYYY-MM-DD HH:MM:SS.MMM

MMM 是秒的一部分。怎么写?

4

2 回答 2

11

对于当前日期

update your_table
set date_field = getdate()

或当前日期和时间

update your_table
set date_field = current_timestamp

或任何日期时间

update your_table
set date_field = '2013-09-23 12:00:00.000'
于 2013-09-23T13:37:17.470 回答
1

你混合了两件事。一种是在显示/转换为 varchar 时格式化日期时间类型,另一种是类型本身。

类型本身在内部存储日期时间,为了这个问题,它与您无关。它总是一样的。您如何看待它 - 在即 SQL Server Management Studio 中 - 完全是另一回事,它依赖于在查询 ( cast(dt_column as varchar(20))) 中直接转换为字符串或通过您使用的工具间接转换为字符串。

如果您想手动设置日期时间类型,您通常会编写一个字符串,其中包含直接转换或间接转换为日期时间格式的日期,即declare @dt datetime = '2012-01-01 23:00:00'间接转换declare @dt datetime = cast('2012-01-01 23:00:00' as datetime)为直接转换。

YYYY-MM-DD HH24:MI:SS.mmm 格式相当规范,所以我很确定您可以使用字符串的间接转换,这样您就可以编写:

update [table_name_here]
set [column_name_here] = '2013-01-01 23:12:11.123'
where ... --this line only if needed; if you have only one row you may skip it

当然用你自己的替换我在''中的日期。

于 2013-09-23T13:48:18.277 回答