Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中的日期数据类型列中插入日期_Sql_Sql Server_Sql Insert_String To Datetime - Fatal编程技术网

在SQL Server中的日期数据类型列中插入日期

在SQL Server中的日期数据类型列中插入日期,sql,sql-server,sql-insert,string-to-datetime,Sql,Sql Server,Sql Insert,String To Datetime,如何将格式为dd-mm-yyyy的日期插入数据类型为date的列中 尝试了以下操作,但显示错误 INSERT INTO Profiles (first_name, last_name, email, phone, [city(hometown)], created_at, gender, referral_code,marital_status) VALUES ('anusha', 'pariti',

如何将格式为
dd-mm-yyyy
的日期插入数据类型为
date
的列中

尝试了以下操作,但显示错误

INSERT INTO Profiles (first_name, last_name, email, phone, 
                      [city(hometown)], created_at, gender, 
                      referral_code,marital_status) 
VALUES ('anusha', 'pariti', 'anusha.pariti@gmail.com', '8105987404', 
        'Bangalore', '16-04-2015', 'F', '7L5FZW', 'Y'),
       ('Ashish', 'Singh', 'ashish.singh@gmail.com', '9876890463', 
        'Bangalore','23-05-2015', 'M', 'KF34MF', 'Y')
错误:

从字符串转换日期和/或时间时,转换失败

错误:

从字符串转换日期和/或时间时,转换失败

错误:

从字符串转换日期和/或时间时,转换失败


尝试使用可接受的格式插入日期,例如使用
20150416
而不是
'16-04-2015

INSERT INTO Profiles (first_name, last_name, email, phone, [city(hometown)],
    created_at, gender, referral_code,marital_status)
VALUES
    ('anusha', 'pariti', 'anusha.pariti@gmail.com', '8105987404', 'Bangalore',
     '20150416', 'F', '7L5FZW', 'Y'),
    ('Ashish', 'Singh', 'ashish.singh@gmail.com', '9876890463', 'Bangalore',
     '20150523', 'M', 'KF34MF', 'Y');
这将允许您将数据作为日期存储在
created\u at
列中。这绝对是存储日期信息的方法。如果以后要以原始方式格式化在列创建的
,可以使用
CONVERT
,例如

SELECT
    CONVERT(varchar, created_at, 105) AS created_at
FROM Profiles;

在SQL server 2012+中,您可以使用

Select try_convert(date, '16-04-2015', 105)

否则,您必须正确格式化字符串

SQL Server中最安全的日期文字是YYYYMMDD

例如。 插入到。。。值('20170523'

似乎您已经习惯于DD-MM-YYYY,如果您想使用该序列,则需要使用带有样式号的convert


转换(日期,'23-05-2017',120)

您尝试过YYYY-MM-DD格式吗?SQL中的数据格式是YYYY-MM-DD。

您可以尝试此方法

dd-mm-yyyy
是意大利语格式,样式代码是105,这就是为什么您应该使用此代码对其进行转换

INSERT INTO Profiles (first_name, last_name, email, phone, 
                      [city(hometown)], created_at, gender,  
                      referral_code, marital_status) 
VALUES ('anusha', 'pariti', 'anusha.pariti@gmail.com', '8105987404', 
        'Bangalore', CONVERT(DATE, '16-04-2015',105), 'F', '7L5FZW', 'Y'),
       ('Ashish', 'Singh', 'ashish.singh@gmail.com', '9876890463', 
        'Bangalore', CONVERT(DATE, '23-05-2015',105), 'M', 'KF34MF', 'Y') 

这可能可行,但更简单的解决方案是只对日期字符串使用ISO格式。是的,可接受的格式正在工作。但是,如果我想要指定的格式,如2015年4月16日。有没有办法将其插入该格式?我不知道。在任何情况下,你为什么要这样做?格式是错误的,你不会这样做o以后再进行详细转换。@Biswa您不能插入日期('16-04-2015'))根据您在datetime字段中的需要,但稍后您可以按照所需的格式进行阅读。好的。这就是我想知道的,在任何情况下是否可能。感谢您,YYYY-MM-DD的日期文字在MSSQL中可能会失败,而它可能是非标准的,并且不直观,YYYYMMDD的日期文字总是可以安全使用的(在MSSQL中!)。建议将日期作为文本插入是错误的建议,尽管转换逻辑可能会起作用。然后,您尝试插入无效的日期值,如2月30日。可能会遇到错误消息,原因很简单,因为字符串不会成为日期。顺便提一下,在使用转换时,您必须包含stule编号(日期,'2015-05-23',120)如果不包括第三个参数,您依赖的默认设置对您没有帮助。此外,第三个日期也不是以数字形式存储的,不是以可读的格式存储的。格式在输入时很重要,可以更改以适应输出。@Tim_Biegeleisen in MSSQL'YYYYMMDD“实际上比‘YYYY-MM-DD’更安全,因为可以设置一个(尽管非常罕见)默认值,将日期解释为‘yyy-DD-MM’。因此,建议使用‘YYYY-MM-DD’文字是错误的,而‘yyyyyymmdd’总是按该顺序解释。就我个人而言,我讨厌它,只是碰巧是这样。
Select try_convert(date, '16-04-2015', 105)
INSERT INTO Profiles (first_name, last_name, email, phone, 
                      [city(hometown)], created_at, gender,  
                      referral_code, marital_status) 
VALUES ('anusha', 'pariti', 'anusha.pariti@gmail.com', '8105987404', 
        'Bangalore', CONVERT(DATE, '16-04-2015',105), 'F', '7L5FZW', 'Y'),
       ('Ashish', 'Singh', 'ashish.singh@gmail.com', '9876890463', 
        'Bangalore', CONVERT(DATE, '23-05-2015',105), 'M', 'KF34MF', 'Y')