日期格式数据 Base mm/dd/yyyy

Posted

技术标签:

【中文标题】日期格式数据 Base mm/dd/yyyy【英文标题】:Date format data Base mm/dd/yyyy 【发布时间】:2021-11-10 12:10:26 【问题描述】:

我有一个 csv 文件,我使用 SSIS 将其插入到数据库中,该文件包含格式为 MM / DD / YYYY hh: ss: mmm Am / Pm 的日期,我将其插入到 varchar 中,因为如果我对日期进行转换,它会使它们变形。这是我的数据:

ARRIVAL_DATE_TIME
9/25/2021 11:40:32 AM
9/25/2021 11:41:46 AM
9/25/2021 11:55:35 AM
9/25/2021 11:56:15 AM
9/25/2021 11:56:37 AM
9/25/2021 11:56:48 AM
9/25/2021 12:12:25 PM
10/8/2021 8:05:12 AM
10/8/2021 8:11:05 AM

我想按顺序显示我的日期,我的日期在 2021 年 9 月 25 日到 2021 年 10 月 19 日之间, 我在sql server下写这个sql代码:

SELECT 
      convert(varchar, [ARRIVAL_DATE_TIME], 9)  a

  FROM [MAKS].[dbo].[Masks] order by a

但显示的结果不好,它混淆了几天和几个月。这就是我得到的

a
10/1/2021 1:00:00 AM
10/1/2021 1:00:06 PM
10/1/2021 1:00:31 AM
10/1/2021 1:00:52 AM
10/1/2021 1:01:06 PM
9/26/2021 9:16:41 AM
9/26/2021 9:19:43 AM
9/26/2021 9:18:28 AM
9/26/2021 9:16:57 AM

大家有什么想法

【问题讨论】:

如果你看documentation风格9就是mon dd yyyy hh:mi:ss:mmmAM (or PM) 日期没有格式。 if I do a transformation in date it deforms them. 不,它没有。日期没有格式,它们是二进制值。不要使用这样的代码。美国以外几乎没有人使用美国格式。格式仅适用于将字符串解析为日期值或将日期值格式化为字符串时。如果您希望日期以某种方式显示,请确保在显示日期时正确格式化它,而不是在数据库中 所以你的日期作为varchar存储在数据库中?那么你的问题就在那里。使用 Date、DateTime2 或 DateTimeOffset 来存储日期时间值,在插入时从它们的字符串表示中解析它们(使用转换)并在选择时将它们显示为字符串(再次使用转换)。然后,您可以正确订购它们,以及其他所有好处。 日期如何显示完全取决于客户。 SSMS 只是一个客户端应用程序。 Web 应用程序或桌面应用程序也是如此。这些客户端应用程序如何显示日期完全取决于它们,尽管默认是使用当前用户的区域设置 使用样式将varchar 转换为varchar 没有任何效果。样式代码用于将 (n)(var)char 转换为 不同 数据类型或从 不同 数据类型转换。如果两个参数都或都不是(n)(var)char,则该参数将被有效忽略。 【参考方案1】:

样式 101 是此处使用的正确日期时间样式,它应该是日期时间才能在日期时间上获得正确的排序:

Select convert(datetime, Arrival_date_time, 101) myDateTime
from myTable
order by myDateTime;

DBFiddle demo

【讨论】:

以上是关于日期格式数据 Base mm/dd/yyyy的主要内容,如果未能解决你的问题,请参考以下文章

dd/mm/yyyy 是啥日期格式?

表时日期时,是用YYYY-MM-DD,还是RRRR-MM-DD

Pandas 将日期字符串从格式 mm/d/yyyy 和 mm/dd/yyyy 转换为 dd.mm.yyyy

将输入日期数据类型更改为 DD/MM/YYYY 而不是 MM/DD/YYYY 需要 [重复]

在熊猫数据框中将不同的日期时间格式转换为 MM/DD/YYYY 格式

将日期格式更改为 yyyy-mm-dd