SQL Server Msg 241, Niveau 16, État 1, la Conversion a échoué lors de la conversion de la date et/ou le temps de chaîne de caractères
J'obtiens cette erreur lors de l'exécution d'un stored procedure
que j'ai créé
Msg 241, Niveau 16, État 1, Procédure UDP_INITIAL_CUSTOMER_DIM_POPULATION, à la Ligne 28
Échec de la Conversion lors de la conversion de la date et/ou le temps de chaîne de caractères.
Le code de la procédure est la suivante:
CREATE PROCEDURE UDP_INITIAL_CUSTOMER_DIM_POPULATION
AS
BEGIN
SET NOCOUNT ON
EXEC UDP_REMOVE_NULLS_FROM_CUSTOMER_STG
INSERT INTO dbo.customer_dim(customer_no, first_name, middle_name, last_name,
street_number, street_name, po_address, zip_code, city,
region, country)
SELECT DISTINCT
CAST(customer_no AS VARCHAR),
first_name,
middle_name,
last_name,
street_number,
street_name,
po_address,
zip_code,
city,
region,
country
FROM
dbo.customer_stg
PRINT 'Initial customer data in place!'
SET NOCOUNT OFF
END
et le code pour créer le customer_dim
table est la suivante:
CREATE PROCEDURE dbo.UDP_CREATE_CUSTOMER_DIM
AS
BEGIN
IF OBJECT_ID('customer_dim', 'U') IS NOT NULL
BEGIN
DROP TABLE customer_dim
END
CREATE TABLE [dbo].[customer_dim]
(
[customer_sk] INT IDENTITY (1,1) PRIMARY KEY,
[customer_no] [varchar](50) NULL,
[first_name] [varchar](50) NULL,
[middle_name] [varchar](50) NULL,
[last_name] [varchar](50) NULL,
[customer_name] [varchar](50) NULL,
[street_number] [varchar](50) NULL,
[street_name] [varchar](50) NULL,
[customer_address] [varchar](100) NULL,
[po_address] [varchar](50) NULL,
[zip_code] [varchar](50) NULL,
[city] [varchar](50) NULL,
[region] [varchar](50) NULL,
[country] [varchar](50) NULL,
[effective_date] DATE NULL DEFAULT GETDATE(),
[expiry_date] DATE NULL DEFAULT '999-12-31'
) ON [PRIMARY]
END
J'ai essayé de chercher une solution, mais parce que je suis pas d'essayer de faire quoi que ce soit sur la date ou l'heure, je ne trouve rien à ce qui fait sens pour moi.
- Je pense que c'est la valeur par défaut pour
expiry_date
.
Vous devez vous connecter pour publier un commentaire.
L'erreur est provoquée par la valeur par défaut pour le
expiry_date
. L'exécution deproduira une erreur:
Ce que vous voulez est
Valeur par défaut doit être converti en type de données de colonne par requête exécuteur testamentaire.
Date type de données nécessite des données en "AAAA-mm-jj", obtenues
Luc problème est avec votre défaut vale pour le type de données date.
Alors que sql est d'essayer de convertir cast /yyy-mm-dd il ne parvient pas à le convertir à la date