日期格式数据 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的主要内容,如果未能解决你的问题,请参考以下文章
表时日期时,是用YYYY-MM-DD,还是RRRR-MM-DD
Pandas 将日期字符串从格式 mm/d/yyyy 和 mm/dd/yyyy 转换为 dd.mm.yyyy
将输入日期数据类型更改为 DD/MM/YYYY 而不是 MM/DD/YYYY 需要 [重复]